Delphi Control Camera

xiaoxiao2021-03-06  36

Does your computer do not came to? See how others use QQ to play with the screen, will you think? Here is an easy implementation of the camera programming using Delphi using the Avicap32.dll using the MS. If you add your network programming level, you will not make any problems with a video chat. Consider the following code Code: 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 capCreateCaptureWindowA (lpszWindowName: PCHAR; dwStyle: longint; x: integer; y: integer; nWidth: integer; nHeight: integer; ParentWin: HWND; nId: integer): HWnd; stdcall external 'avicap32.dll'; the above code is what we mainly used A function and constant definition of a constant. Ok, open your Delphi, create a new project, add the definition above.

Create a window, put a panel, add a button, CAPTION is set to "Start" here you need to define a global variable, the start button code is as follows: beginhWndc: = CapcreateCaptureWindoWa ('My OWN Capture Window', WS_Child OR WS_VISIBLE, Panel1.Left, Panel1.Top, Panel1.Width, Panel1.Height, Form1.Handle, 0); hWndC: = capCreateCaptureWindowA ( 'My Own Capture Window', WS_CHILD or WS_VISIBLE, Panel1.Left, Panel1.Top, Panel1 .Width, Panel1.Height, Form1.Handle, 0); if hWndC <> 0 then beginSendMessage (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; press F9 to run, how can you see the camera's view? How can I stop? Add a button CAPTION is set to "stop" code as follows: if hwndc <> 0 Then BegipmentMessage (hwndc, wm_cap_driver_disconnect, 0, 0); hwndc: = 0; END; Vision screen, how to save it? The following is saved in two ways, one is a BMP static diagram, one is an AVI animation. Play three buttons to the form, CAPTION is set to "Save BMP", "Start Video", "Start Video" three buttons, the code is as follows: // Save Bmpif HWNDC <> 0 Then BegipmentMessage (hwndc, wm_cap_savedib , 0, longint (PCHAR ('c: //test.bmp')))))); end; // Start recording if hwndc <> 0 thenbeginsendMessage (HWNDC, WM_CAP_FILE_SET_CAPTURE_FILEA, 0, LONGINT (Pchar ('C: // Test). Avi ')))))); sendMessage (hwndc, wm_cap_sequence, 0, 0); end; // Stop recording if hwndc <> 0 THENSENDMESSAGE (HWNDC, WM_CAP_STOP, 0, 0); END; run again. . You can save a few pictures, you can also enjoy it after recording AVI.

Program operation: [Related map] http://yousoft.hi.com.cn/upload/forum/2004715161959.jpg Complete program code as follows: Unit Unit1; Interfaceuseswindows, Messages, Sysutils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; typeTForm1 = 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); privatehWndC: THandle; public {public declarations} end; varForm1: 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 = W M_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 capCreateCaptureWindowA (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); beginhWndC: = capCreateCaptureWindowA ( 'My Own Capture Window', WS_CHILD or WS_VISIBLE, Panel1 .Left, Panel1.Top, Panel1.Width, Panel1.Height, Form1.Handle, 0); hWndC: = capCreateCaptureWindowA ( 'My Own Capture Window', WS_CHILD or WS_VISIBLE, Panel1.Left, Panel1.Top, Panel1.Width, Panel1.Height, Form1.Handle, 0); if hWndC <> 0 then beginSendMessage (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); Beginif HWNDC <> 0 THENSENSENDMESSAGE (HWNDC, WM_CAP_DRIVER_DISCONNECT, 0, 0); hWndc: = 0; end; end; proc; edure TForm1.Button3Click (Sender: TObject); beginif hWndC <> 0 then beginSendMessage (hWndC, WM_CAP_SAVEDIB, 0, longint (pchar ( 'c: //test.bmp'))); end; end; procedure TForm1.Button4Click ( Sender: TObject); beginif hWndC <> 0 thenbeginSendMessage (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); beginif hWndC <> 0 then beginSendMessage (hWndC, WM_CAP_STOP, 0, 0); end; end; procedure TForm1.FormClose (Sender: TObject; var Action: TCloseAction); beginif hWndC <> 0 THEN BEGINSENDMESSAGE (HWNDC, WM_CAP_DRIVER_DISCONNECT, 0, 0); end; end; end. If the computer does not have a camera, you want to see the effect of the program, can you? Ha ha,

转载请注明原文地址:https://www.9cbs.com/read-56165.html

New Post(0)