Estoy buscando la manera de hacer una captura con la webcam de manera silenciosa, hasta he conseguido hacer la foto con el código de abajo, pero me sale una ventana para elegir un programa externo que me haga la foto, lo selecciono y me hace la foto, la función que lo hace es capDriverConnect(), lo que quiero es que haga la foto sin que salga esa ventana, es decir elegir el driver o programa que haga la foto de otra forma:
#define MY_BUFSIZE 1024
#include <windows.h>
#include <iostream>
#include <cstdio>
#include <fstream>
#include <cstring>
#include <vfw.h>
using namespace std;
void photo();
void photo()
{
HWND hwndMain;
HWND hwndVideo;
char szDeviceName[80];
char szDeviceVersion[80];
char item[161];
int i;
char pszOldWindowTitle[MY_BUFSIZE];
GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
SetConsoleTitle("deraradfsfsa");
Sleep(40);
hwndMain = FindWindow(NULL, "deraradfsfsa");
SetConsoleTitle(pszOldWindowTitle);
hwndVideo = capCreateCaptureWindow("My Capture Window", M_COMMAND, 0, 0, 640, 480, hwndMain, 0);//NULL para que no se vea la ventana.
capDriverConnect(hwndVideo, 0);//Esta función abre una ventana y me pide elegir un driver para hacer la foto (ciberlink...)
capPreviewRate(hwndVideo, 66);
capPreview(hwndVideo, true);
capDlgVideoSource(hwndVideo);
for(int i=0;i<25;i++)
{
capGrabFrame(hwndVideo);
}
capFileSaveDIB(hwndVideo, "C:\\Users\\User\\Desktop\\captura.bmp");
capPreview(hwndVideo, FALSE);
DestroyWindow(hwndVideo);
hwndVideo = NULL;
}
Estoy probando también con esto para capturar el driver:/*capDriverConnect(hwndVideo, 0);
WM_CAP_DRIVER_CONNECT wParam = (WPARAM)(iIndex);
lParam = 0D;*/
while (!SendMessage(hwndVideo, WM_CAP_DRIVER_CONNECT, driver,0))
{
driver++;
if (driver>9)
{
DestroyWindow(hwndVideo);
printf("fallo al intentar conectar");
break;
}
}
Es equivalente, sigue saliendo la ventana y tengo que elegir el driver, me pregunto si alguno de ustedes saben como hacer equivaler esa función sin sacar la ventana.Saludos.