Autor
|
Tema: Evitar Cuadro de dialogo "Origen de video" (Leído 7,544 veces)
|
Vaagish
Desconectado
Mensajes: 875
|
Hola! Estoy con un programa que captura una imagen de la webcam, es aplicación de consola, sobre Win7, uso las funciones capCreateCaptureWindow, capDriverConnect, capDriverDisconnect y SendMessage, la imagen se captura, pero 2*3 me pide que seleccione la cámara de una lista (en la que solo existe una cámara, porque es la única que tengo), si bien ya he buscado por otros lados y di con gente que tiene el mismo problema quisiera saber por que a veces sale y a veces no.. y de ser posible que no salga nunca, porque quema mucho jaja CODE: int GetWebCam() { hWnd = GetConsoleWindow(); Captura = capCreateCaptureWindow("handle", WS_CHILD | WS_VISIBLE, 0, 0, 640, 480, hWnd, 1); if (capDriverConnect(Captura, 0) != 0) { EmptyClipboard(); //SendMessage(Captura, WM_CAP_DLG_VIDEOSOURCE, 0, 0); ShowWindow(Captura, SW_HIDE); SendMessage(Captura, WM_CAP_SET_PREVIEW, true, 0); SendMessage(Captura, WM_CAP_GRAB_FRAME, 0, 0); SendMessage(Captura, WM_CAP_EDIT_COPY, 0, 0); OpenClipboard(NULL); HBM = HBITMAP(GetClipboardData(CF_BITMAP)); SaveToFile(HBM, "Imagen.jpg"); capDriverDisconnect(Captura); return 0; } cout << "Error capCreateCaptureWin: " << GetLastError() << endl; return -1; }
Saludos! PD: SendMessage(Captura, WM_CAP_DLG_VIDEOSOURCE, 0, 0) Esta comentado porque si dejo esa linea sale siempre el cuadro... PD2: Creo que GetLastError no tiene uso en este codigo, pero la deje para no editar el codigo que salga todo torcido.
|
|
« Última modificación: 7 Abril 2014, 23:03 pm por Vaagish »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
¿Que te podemos decir? El codigo no compila Depuralo con el WinDbg y mira la pila cuando muestre ese dialogo para saber que condicion/es lleva/n a mostrarlo.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
Bueno,, ta bien.. código completo la próxima,, intento depurarlo.. pero no te suena que sea algo propio de win7? La MSDN dice que tenemos esta funcion: char szDeviceName[80]; char szDeviceVersion[80]; for (wIndex = 0; wIndex < 10; wIndex++) { if (capGetDriverDescription( wIndex, szDeviceName, sizeof (szDeviceName), szDeviceVersion, sizeof (szDeviceVersion) )) { // Append name to list of installed capture drivers // and then let the user select a driver to use. } }
Y que el usuario elija, pero en la practica hay programas que no abren cuadro de dialogo,, así que se tiene que poder.. Saludos!
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
Depura alguno de esos otros programas Pones un breakpoint en la llamada a capCreateCaptureWindow y te fijas si por ejemplo hWnd es diferente de 0 (por decir algo, jamas use esta API) o si antes de llamarla usa otras APIs para configurar algo ...
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
Ok,, es un buen lugar por donde empezar.. Tnks! Saludos! Y si lo logro pongo el code PD: Una consola que muestra video!! #include <Windows.h> #pragma comment(lib, "Vfw32.lib") #include <Vfw.h> int main() { HWND hWnd = GetConsoleWindow(); HWND Captura = capCreateCaptureWindow("CaptureWin", WS_CHILD | WS_VISIBLE, 0, 0, 640, 480, hWnd, 1); if (capDriverConnect(Captura, 0) != 0) { SendMessage(Captura, WM_CAP_DLG_VIDEOSOURCE, 0, 0); while (true){ SendMessage(Captura, WM_CAP_SET_PREVIEW, true, 0); SendMessage(Captura, WM_CAP_GRAB_FRAME, 0, 0); SendMessage(Captura, WM_CAP_EDIT_COPY, 0, 0); } SendMessage(Captura, WM_CAP_DRIVER_DISCONNECT, 0, 0); } return 0; }
Por lo menos a mi me muestra la captura de la cámara en el programa de consola, al pasarle el hWnd de la ventana.. :p
|
|
« Última modificación: 8 Abril 2014, 00:35 am por Vaagish »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
Momento ... ¿Para que mandas ese mensaje? WM_CAP_DLG_VIDEOSOURCE message¿Acaso no esta haciendo exactamente lo que le estas pidiendo?
Remarks The Video Source dialog box is unique for each capture driver. Some capture drivers might not support a Video Source dialog box. Applications can determine if the capture driver supports this message by checking the fHasDlgVideoSource member of the CAPDRIVERCAPS structure.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
Haa,, si.. en ese caso sale siempre,, si no lo uso ese mensaje sale cuando quiere el cuadro de dialgo,, ojo.. en realidad no quiero que salga... es que estoy combinando cosas.. jaja PD: Ahora me colgué haciendo pruebas con las funciones para grabar video, pero voy a probar con Olly a ver cuando se produce el llamado al cuadro de dialogo, porque seguro que yo no lo hago, o no es mi intención jaja y en cuanto lo identifique,, te juro que lo mato..
|
|
« Última modificación: 8 Abril 2014, 01:05 am por Vaagish »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
Mmm me da la impresion de que estas complicado, me sale el dialogo y hay un solo driver "Microsoft WDM Image Capture (Win32)" (capGetDriverDescription solo retorna datos con index 0) y dos dispositivos de video. Antes tenia deshabilitada la webcam, asi que seguramente cuando hay 2 o mas dispositivos de video te muestra el dialogo, capaz necesitas una API de menor nivel (a dispositivo de video y no capturador).
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
Uff,, ahora estaba intentando con Olly llegar al problema, pero se tranca no se por que.. y WinDbg nunca lo entendí.. En teoría debería tener solo un dispositivo de video, la cámara integrada en la notebook.. Como seria eso de la api de menor nivel? Comunicarme con el dispositivo directamente y no usar capCreateCaptureWindow?
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
Uff,, ahora estaba intentando con Olly llegar al problema, pero se tranca no se por que.. y WinDbg nunca lo entendí.. Si ejecuto el programa desde WinDbg no funciona bien asi que lo ejecuto normalmente y despues me attacheo con WinDbg. En teoría debería tener solo un dispositivo de video, la cámara integrada en la notebook.. Si ... pero el Cyberlink DVD instalo un splitter en mi notebook Asi que hay dos, uno virtual y otro fisico. Como seria eso de la api de menor nivel? Comunicarme con el dispositivo directamente y no usar capCreateCaptureWindow? Me da la impresion que podrias usar DirectShow: Selecting a Capture DeviceEse codigo me enumero: CyberLink Webcam Splitter Device path: \\?\root#media#0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global HP Webcam-50 Device path: \\?\usb#vid_05c8&pid_0223&mi_00#7&1d1c0389&0&0000#{65e8773d-8f56-11 d0-a3b9-00a0c9223196}\global Internal Mic (IDT High Definiti WaveIn ID: 0 Headset Mic (IDT High Definitio WaveIn ID: 2 Stereo Mix (IDT High Definition WaveIn ID: 1
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como crear cuadro de dialogo "seleccionar equipo de red"?
.NET (C#, VB.NET, ASP)
|
eldiegofg
|
0
|
2,610
|
30 Abril 2010, 06:23 am
por eldiegofg
|
|
|
Vídeo: Troyano "Dot-Torrent" aprovecha el miedo a las descargas "ilegales"
Noticias
|
wolfbcn
|
0
|
3,642
|
4 Agosto 2010, 01:18 am
por wolfbcn
|
|
|
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
|
Dark4ngel
|
7
|
14,117
|
3 Noviembre 2011, 10:42 am
por Dark4ngel
|
|
|
¿Batch y cuadro de dialogo "Seleccionar directorio/archivo"?
Scripting
|
Rywshan
|
4
|
5,804
|
24 Junio 2014, 23:20 pm
por Dany3j
|
|
|
Como poner una constante dentro de un Dialogo "Cout"?
Programación C/C++
|
Rodrili1337
|
2
|
2,031
|
27 Noviembre 2018, 08:19 am
por K-YreX
|
|