Zitat von
internetnavigator:
bitte!! ich brauche nur den code, damit das Programm auch bei maximierten Fenstern, wenn es nicht im Vordergrund ist, weiterläuft. BITTE!
mfg
SendMessage(ghCapWnd, WM_CAP_GRAB_FRAME_NOSTOP, 1, 0); //weitergrabben wenn Anwendung minimiert oder verdeckt ist
Delphi-Quellcode:
//das im Timer aufrufen
...
capSetCallbackOnFrame(ghCapWnd, integer(@FrameCallbackFunction));
...
uses VideoCap, avicap, VideoMci;
//grabben über callback fuction
function FrameCallbackFunction(AHandle : hWnd; VIDEOHDR : TVideoHDRPtr): bool; stdcall;
begin
result := true;
// da diese Callback-Funktion sonst bei jedem Preview-Frame ganz durchlaufen werden würde:
// jetzt nur noch mehr dann, wenn draußen GrabFrameFlag auf TRUE gesetzt wurde PLUS, für die
// Hintergrundlaufbarkeit: SendMessage(ghCapWnd, WM_CAP_GRAB_FRAME_NOSTOP, 1, 0);
if GrabFrameFlag = false then exit;
GrabFrameFlag := false;
SendMessage(ghCapWnd, WM_CAP_GRAB_FRAME_NOSTOP, 1, 0);
//erzeuge Grundbildmaße
with Form1 do
begin
with camBitmapInfo.bmiHeader do
begin
bild_anzeige.Width:=biWidth;
bild_anzeige.Height:=biHeight;
bild_original.Width:=biWidth;
bild_original.Height:=biHeight;
bild_old.Width:=biWidth;
bild_old.Height:=biHeight;
bild_anzeige.PixelFormat:=pf24bit; //truecolorBild
bild_original.PixelFormat:=pf24bit; //truecolorBild
bild_old.PixelFormat:= pf24bit;
end;
hCompatibleBitmap:=bild_original.Handle;
//function sets the bits of color data for a bitmap to the specified values.
SetBitmapBits(hCompatibleBitmap,VideoHDR^.dwBufferLength,VideoHDR^.lpData); //return= anzahl bytes
//Bild jetzt in bild_original
...
end;//form1
GrabFrameFlag := true;
end;