Unit unit1; Interface Uses Windows, messages, Sysutils, variants, classes, graphics, controls, forms, Dialogs, Stdctrls, extctrls; Type Tform1 = Class (tform) Panel1: Tpanel; Button1: tbutton; Button2: tbutton; Button3: tbutton; Button4: Tbutton; Button5: tbutton; Procedure button1click (Sender: Tobject ); Procedure button2click (Sender: tobject ); Procedure Button3click (Sender: tobject ); Procedure button4click (Sender: Tobject ); Procedure button5click (Sender: tobject ); Procedure Formclose (Sender: tobject; var action: tcloseaction ); Private Hwndc : Thandle; Public {Public declarations} End; VaR Form1: Tform1; Const wm_cap_start = wm_user; Const wm_cap_stop = Wm_cap_start + 68; Const wm_cap_driver_connect = wm_cap_start + 10; Const Wm_cap_driver_disconnect = wm_cap_start + 11; Const wm_cap_savedib = Wm_cap_start + 25; Const wm_cap_grab_frame = wm_cap_start + 60; Const Wm_cap_sequence = wm_cap_start + 62; Const Wm_cap_file_set_capture_filea = wm_cap_start + 20; Const Wm_cap_sequence_nofile = wm_cap_start + 63 Const wm_cap_set_overlay = Wm_cap_start + 51 Const wm_cap_set_preview = wm_cap_start + 50 Const Wm_cap_set_callback_videostream = wm_cap_start + 6; Const Wm_cap_set_callback_error = wm_cap_start + 2; Const Wm_cap_set_callback_statusa = wm_cap_start + 3; Const Wm_cap_set_callback_frame = wm_cap_start + 5; Const Wm_cap_set_scale = wm_cap_start + 53 Const Wm_cap_set_previewrate = wm_cap_start + 52 Function Capcreatecapture0000wa (lpszwindowname: pchar; Dwstyle: longint; X: Integer; Y: integer; nwidth: integer; Nheight: integer; parentwin: Hwnd; NID: integer): hwnd; Stdcall external 'avicap32. dll '; Implementation {$ R *. DFM} Procedure tform1.button1click (Sender: tobject ); Begin Hwndc : = Capcreatecapturew.wa ('my own capture Window', ws_child or Ws_visible , Panel1.left, panel1.top, panel1.width, panel1.height, form1.handle, 0 ); Hwndc : = Capcreatecapturew.wa ('my own capture Window', ws_child or Ws_visible , Panel1.left, panel1.top, panel1.width, panel1.height, form1.handle, 0 ); If Hwndc <> 0 then Begin Sendmessage (hwndc, Wm_cap_set_callback_videostream, 0, 0 ); Sendmessage (hwndc, Wm_cap_set_callback_error, 0, 0 ); Sendmessage (hwndc, Wm_cap_set_callback_statusa, 0, 0 ); Sendmessage (hwndc, Wm_cap_driver_connect, 0, 0 ); Sendmessage (hwndc, wm_cap_set_scale, 1, 0 ); Sendmessage (hwndc, wm_cap_set_previewrate, 66, 0 ); Sendmessage (hwndc, Wm_cap_set_overlay, 1, 0 ); Sendmessage (hwndc, wm_cap_set_preview, 1, 0 ); End; End; Procedure tform1.button2click (Sender: Tobject ); Begin If hwndc <> 0 then begin Sendmessage (hwndc, Wm_cap_driver_disconnect, 0, 0 ); Hwndc: = 0; End; End; Procedure Tform1.button3click (Sender: tobject ); Begin If hwndc <> 0 Then begin Sendmessage (hwndc, wm_cap_savedib, 0, longint (pchar ('C:/test.bmp '))); End; End; Procedure Tform1.button4click (Sender: tobject ); Begin If hwndc <> 0 Then Begin Sendmessage (hwndc, wm_cap_file_set_capture_filea, 0, Longint (pchar ('C:/test. avi '))); Sendmessage (hwndc, wm_cap_sequence, 0, 0 ); End; End; Procedure tform1.button5click (Sender: Tobject ); Begin If hwndc <> 0 then begin Sendmessage (hwndc, Wm_cap_stop, 0, 0 ); End; End; Procedure Tform1.formclose (Sender: tobject; var action: tcloseaction ); Begin If Hwndc <> 0 then begin Sendmessage (hwndc, Wm_cap_driver_disconnect, 0, 0 ); End; End; End. |