WebCam con AviCap32.DLL
Publicado: Vie Oct 13, 2023 6:07 am
Hola a todos:
Estoy desempolvandome en la programacion avanzada con Xailer y estoy haciendo una pequeña interfaz para manipular la cámara web del ordenador para tomar fotos.
Para esto, estoy basándome en la DLL del API de Windows: AviCap32.dll, que se supone provee una manera "rápida y fácil" de conectar con dispositivos de captura de video y seguramente así es, porque la DLL solo trae 2 funciones principales, y el resto de la funcionalidad de obtiene usando SendMessage().
Documentación de AviCap32.dll está disponible en: https://learn.microsoft.com/en-us/windo ... urewindowa
Después de investigar un rato ejemplos en VB6, incluso en FW, llegué a un video en Delphi, el cual decidí seguir para hacer mi implementación en xailer: https://www.youtube.com/watch?v=Fl-5ImV_PE4&t=1366s
Básicamente todos los ejemplos hacen lo mismo:
1) Crean una clase para manipular la webcam, y desde esta clase hacen llamadas a las funciones de AviCap32.dll
2) Crean un formulario con 4 controles: un "contenedor" para el objeto WebCam, en VB utilizan una imagen, en Delphi un Panel, en FW lo pintan directo sobre el dialogo y yo decidí utilizar un BEVEL para contener la captura de la WebCam. Los otros 3 controles son botones para conectar con la cámara, desconectarla y obtener el "frame" de la imagen, o sea, sacar una foto.
3) En todos los lenguajes observé que toda "la magia" ocurre en los eventos ON INITIALIZE de los formularios, donde se crea el objeto WebCam, y este objeto debe utiliar el handle del contenedor para llamar a la función capCreateCaptureWindowA() del AviCap32.DLL que se supone que es la ventana de la cámara web, misma que "apoderara" del control contenedor y lo utilizara para desplegar las imágenes de la webcam.
Y hasta aquí es donde llego, supongo que algo estoy haciendo mal con los Handles de los controles, que mi formulario se despliega correctamente, se pintan los 3 botones pero cuando llega el momento de pintar el BEVEL contenedor, aparece un bonito GPF y el programa aborta.
El proyecto lo pueden descargar de: https://www.virtual-pac.net/XaWebCam.zip, por si alguien quiere echarle un vistazo a ver en donde me estoy equivocando (esto seguro que el bosque no me deja ver los arboles), supongo que varios agradeceremos tener una herramienta para capturar imágenes de una cámara web, ya después si alguno con mas paciencia que yo lo quiere convertir en control nativo para Xailer, pues bienvenido.
Saludos y nos vemos en Noviembre ¿ no ?
Rene Flores
Estoy desempolvandome en la programacion avanzada con Xailer y estoy haciendo una pequeña interfaz para manipular la cámara web del ordenador para tomar fotos.
Para esto, estoy basándome en la DLL del API de Windows: AviCap32.dll, que se supone provee una manera "rápida y fácil" de conectar con dispositivos de captura de video y seguramente así es, porque la DLL solo trae 2 funciones principales, y el resto de la funcionalidad de obtiene usando SendMessage().
Documentación de AviCap32.dll está disponible en: https://learn.microsoft.com/en-us/windo ... urewindowa
Después de investigar un rato ejemplos en VB6, incluso en FW, llegué a un video en Delphi, el cual decidí seguir para hacer mi implementación en xailer: https://www.youtube.com/watch?v=Fl-5ImV_PE4&t=1366s
Básicamente todos los ejemplos hacen lo mismo:
1) Crean una clase para manipular la webcam, y desde esta clase hacen llamadas a las funciones de AviCap32.dll
2) Crean un formulario con 4 controles: un "contenedor" para el objeto WebCam, en VB utilizan una imagen, en Delphi un Panel, en FW lo pintan directo sobre el dialogo y yo decidí utilizar un BEVEL para contener la captura de la WebCam. Los otros 3 controles son botones para conectar con la cámara, desconectarla y obtener el "frame" de la imagen, o sea, sacar una foto.
3) En todos los lenguajes observé que toda "la magia" ocurre en los eventos ON INITIALIZE de los formularios, donde se crea el objeto WebCam, y este objeto debe utiliar el handle del contenedor para llamar a la función capCreateCaptureWindowA() del AviCap32.DLL que se supone que es la ventana de la cámara web, misma que "apoderara" del control contenedor y lo utilizara para desplegar las imágenes de la webcam.
Y hasta aquí es donde llego, supongo que algo estoy haciendo mal con los Handles de los controles, que mi formulario se despliega correctamente, se pintan los 3 botones pero cuando llega el momento de pintar el BEVEL contenedor, aparece un bonito GPF y el programa aborta.
El proyecto lo pueden descargar de: https://www.virtual-pac.net/XaWebCam.zip, por si alguien quiere echarle un vistazo a ver en donde me estoy equivocando (esto seguro que el bosque no me deja ver los arboles), supongo que varios agradeceremos tener una herramienta para capturar imágenes de una cámara web, ya después si alguno con mas paciencia que yo lo quiere convertir en control nativo para Xailer, pues bienvenido.
Saludos y nos vemos en Noviembre ¿ no ?
Rene Flores