Delphi控制摄像头
2009-03-28 10:05
387 查看
使用AVICAP32.DLL实现对摄像头编程。
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 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); begin hWndC := 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 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.
相关文章推荐
- DELPHI控制摄像头照相
- 利用Delphi编程控制摄像头(图)
- Delphi编程控制摄像头 //使用DELPHI使用MS的AVICAP32.DLL就可轻松的实现对摄像头编程
- 利用Delphi编程控制摄像头
- Delphi 控制摄像头 AVICAP32.DLL
- Delphi 控制摄像头操作
- Delphi 控制摄像头
- Delphi 控制摄像头
- Delphi控制摄像头
- Delphi控制摄像头
- Delphi 控制摄像头
- Delphi控制摄像头
- Delphi编程控制摄像头
- Delphi在Vasta/win 7下通过UAC控制
- unity3d 中控制手机前后摄像头切换
- 用Delphi全面控制Excel
- VFW在windows下编程控制摄像头
- delphi 控制打印机字体TLogFont
- Delphi中远程控制的实现(一)
- VC-摄像头控制SDK源码