hi,
in der codelib gibt es ja folgenden code:
Delphi-Quellcode:
//Zuerst brauchst du folgende Konstanten
const
WM_CAP_DRIVER_CONNECT = WM_USER + 10;
WM_CAP_EDIT_COPY = WM_USER + 30;
WM_CAP_SET_PREVIEW = WM_USER + 50;
WM_CAP_SET_OVERLAY = WM_USER + 51;
WM_CAP_SET_PREVIEWRATE = WM_USER + 52;
implementation
{$R *.dfm}
//Dann brauchst du noch das hier
function capCreateCaptureWindow(lpszWindowName: LPCSTR;
dwStyle: DWORD;
x, y,
nWidth,
nHeight: integer;
hwndParent: HWND;
nID: integer): HWND;
stdcall;
external '
AVICAP32.DLL'
name '
capCreateCaptureWindowA';
procedure TForm1.LaberLaber;
//halt irgendne Prozedur, ich habs im Formcreate, damit ich gleich was seh ^^
var handle:THandle;
begin
handle := capCreateCaptureWindow('
Video',ws_child+ws_visible, 0,
0, 320, 240, Panel1.Handle, 1);
//Wie du siehst, brauchst du ein Panel in diesem Beispiel ;-)
SendMessage(
handle, WM_CAP_DRIVER_CONNECT, 0, 0);
SendMessage(
handle, WM_CAP_SET_PREVIEWRATE, 30, 0);
sendMessage(
handle, WM_CAP_SET_OVERLAY, 1, 0);
SendMessage(
handle, wm_cap_set_preview, 1, 0);
end;
Aber wenn man dass in ne timer prozedur tue, dann ist angeblich schon irgendnein videotreiber verwendet. (verständlich, weil ich ja zweimal auf das gleiche zugriefen will, oda?)
meine frage ist jetzt wie ich das so mache dass es wieder so geht wie beim ersten mal nach dem zweiten mal
. gibts irgendein Driver Disconnect was ich verwenden kann, hab das hier irgendwo mal gelesen, also mit dem diconnecten.
Ich habe es ja auch schon so ausprobiert:
SendMessage(handle, WM_CAP_DRIVER_DISCONNECT, 0, 0);
bzw. dann in const auch dass:
WM_CAP_DRIVER_DISCONNECT = WM_USER + 10;
aber wenn der code das zweite mal läuft kommt die gleiche meldung!!!
Der Fehler ist jetzt als png datei im anhang!
MFG Lars Wiltfang
Noch ne kleine Frage die grad aufkommt: Wie kann man das ganze schneller machen