[ Rapaic Rajko @ 19.07.2012. 08:02 ] @
Dakle, resio sam da pisem neku aplikaciju za (amaterski) video nadzor.
Sve sam radio po tutorijalu iz Win API-ja, "Video Capture". Po toj prici, tri linije koda su dovoljne da dobijete sliku/frame na ekranu.

1) capCreateCaptureWindow();
2) capDriverConnect();
3) capGrabFrame();

Dobro, zadnje dve su zapravo makro-i, ali to nije bitno. Sve lepo radi sa ugradjenom kamerom u laptopu. Medjutim, nakacio sam jos jednu kameru (Genius iLook300), propisno instalirao driver (radi u Skype-u), ali konekcija na nju (capDriverConnect) nikako ne uspeva. Ova funkcija ima dva parametra, jedan je HWND, a drugi integer u rasponu 0-9; nece. Pokusao sam SAMO na drugu kameru da se nakacim, ni to nece.

Da li je neko radio sa ovim API-jem? Da li je uopste moguce pokrenuti dve kamere istovremeno na Windows-u, posto ima jedna recenica u help-u: "Connecting a capture driver to a capture window automatically disconnects any previously connected capture driver." ?

Unapred hvala na svakoj pomoci!
[ Rapaic Rajko @ 20.07.2012. 14:02 ] @
Daklem, proradilo.
Znao sam to i ranije, ali da ponovim: M$ (OS, API, help, pogotovo ovo zadnje) je b@llshit. Bez dva dana isprobavanja nema sanse da covek provali sta se desava.

Pa sad imam drugo pitanje: kako preventovati/spreciti pojavu (sistemskog) dijaloga za izbor kamere/device-a? Ideja je da ga preduhitrim, ili mu posaljem neku poruku cim se pojavi, sa kodiranim izborom kamere?

Hvala opet!


[Ovu poruku je menjao Rapaic Rajko dana 20.07.2012. u 15:21 GMT+1]

[Ovu poruku je menjao Rapaic Rajko dana 20.07.2012. u 15:23 GMT+1]
[ salaczr @ 23.07.2012. 10:38 ] @
Mozes da probas sa SetWinEventHook funkcijom

Code:

var
  hndHook : THandle;
...

hndHook := SetWinEventHook(EVENT_SYSTEM_FOREGROUND, EVENT_SYSTEM_FOREGROUND, 0, WinProc, 0, 0, WINEVENT_SKIPOWNTHREAD);
...

procedure WinProc(hWinEventHook: THandle; event: DWORD; hwnd: HWND; idObject, idChild: Longint; idEventThread, dwmsEventTime: DWORD); stdcall;
var
  winTitle : Array[0..MAX_PATH - 1] of Char;
  Title : string;
begin
  GetWindowText(hwnd, winTitle, MAX_PATH);
  Title := Trim(StrPas(winTitle));
  // ovde vidis koji je title prozora koji se pojavio
  // i imas njegov handle
  // mozes da mu posaljes da se ugasi sa
  // PostMessage(hwnd, WM_QUIT, 0, 0);
  // ili
  // SendMessage(hwnd, WM_CLOSE, 0, 0);
end;


pozdrav
[ Rapaic Rajko @ 24.07.2012. 13:52 ] @
salaczr, hvala veliko! :)

Istini za volju, meni treba malo vise od prostog gasenja prozora (neka komunikacija sa combobox-om na istom), ali kapiram da se moze izvesti kroz poruke; najvaznije je uloviti/imati handle forme.

Hvala jos jednom!

[ salaczr @ 24.07.2012. 16:12 ] @
Velika je cast pomoci jednom od bardova Delphi programiranja na ES-u.

pozdrav