Autor Tema: [SRC] clsThreadedApiCall: Llamar a APIs en otro thread!  (Leído 3439 veces)

0 Usuarios y 1 Visitante están viendo este tema.

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
[SRC] clsThreadedApiCall: Llamar a APIs en otro thread!
« en: Febrero 10, 2014, 12:23:49 am »
Hola!
Bueno, como ya realmente no uso mas VB6 (solo para proyectos menores, o algunos que realmente sean justificados usar VB6), estas clases son como "mis ultimos proyectos".

En esta entrega, les traigo una clase, muy similar a la anterior (clsHttpRequests), pero que permite customizar a que API llamar, como asi tambien sus parametros.

Cabe destacar que las API no estan pensadas para ser llamadas en un thread "sencillo" como el que se usa en el codigo, sino que se debe hacer toda la logica en el thread. Pero bueno, creo que el 90% de apis van a funcionar sin chistar, asi que :P

Cuestion, la clase expone pocos metodos (los cuales sirven para inicializar, llamar y desinicializar), como asi tambien pocos eventos (Done, Cancelled, Timeout).

En el ejemplo llamo a 2 funciones, una es Beep (con 2 parametros), y a MessageBoxW (con texto y demas).

Nota: Para el beep, le indico que quiero un timeout de 1s, pero el API bloqueara el thread por 3s, de esta forma se muestra como aparece el evento de Timeout.
Ademas es importante remarcar que NO ES POSIBLE detener un API (siempre y cuando no pueda ser detenida cerrandole algun handle o algo asi), por lo tanto, la funcion Beep continuara hasta que pasen los 3s.


Como de costumbre, el link apunta a la ultima version:
asm thread api call.zip

Espero sus comentarios. Saludos!!!
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
Re:[SRC] clsThreadedApiCall: Llamar a APIs en otro thread!
« Respuesta #1 en: Febrero 10, 2014, 04:57:41 pm »
Excelente! ya tengo un uso para esto : ]

Muy bueno coco.

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:[SRC] clsThreadedApiCall: Llamar a APIs en otro thread!
« Respuesta #2 en: Febrero 10, 2014, 10:36:59 pm »
Buena coco se ve interesante, una pregunta, en el ejemplo del beep hay dos llamadas seguidas una la de 300hz  y la 700hz  , pero nunca suenan las dos juntas, normalmente si lo hiciera con una llamada de api standar, seria sincrono primero la de  300 y luego la de 700, en este caso deverian sonar las dos frecuencias juntas??, noto algo curioso que es de forma aleatoria aveces suena la de 300 y otras  la de 700 pero nunca juntas o en forma consecutivas.

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:[SRC] clsThreadedApiCall: Llamar a APIs en otro thread!
« Respuesta #3 en: Febrero 10, 2014, 10:49:53 pm »
Si, teoricamente no se pueden ejecutar mas de una a la vez. De todas formas, hubiese sido mejor llama a UrlDownloadToFile (cobein me dio la idea), para demostrar otras apis.
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion