當前位置:編程學習大全網 - 編程語言 - 誰有用delphi編寫的用於控制攝像頭錄像並且保存的程序代碼,發給我壹個,不勝感激!越快越好……

誰有用delphi編寫的用於控制攝像頭錄像並且保存的程序代碼,發給我壹個,不勝感激!越快越好……

unit ControlMonitor;

interface

uses Messages, Windows, SysUtils, Forms;

function OpenMonitor(Left, Top, Width, Height: Integer; Handle: HWND): Boolean;

function CloseMonitor(): Boolean;

function Capture(FileName: String): Boolean;

function BeginRecord(FileName: String): Boolean;

function EndRecord(): Boolean;

implementation

var

hWndC : THandle;

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';

//打開

function OpenMonitor(Left, Top, Width, Height: Integer; Handle: HWND): Boolean;

begin

Result := False;

try

hWndC := capCreateCaptureWindowA('My Own Capture Window',

WS_CHILD or WS_VISIBLE ,

Left,

Top,

Width,

Height,

Handle,

0);

hWndC := capCreateCaptureWindowA('My Own Capture Window',

WS_CHILD or WS_VISIBLE ,

Left,

Top,

Width,

Height,

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);

Result := True;

end;

except

on E: Exception do

begin

MessageBox(Application.Handle, PChar(E.Message), '錯誤', MB_OK OR MB_ICONERROR);

Result := False;

end;

end;

end;

//關閉

function CloseMonitor(): Boolean;

begin

Result := False;

try

if hWndC <> 0 then

begin

SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);

hWndC := 0;

Result := True;

end;

except

on E: Exception do

begin

MessageBox(Application.Handle, PChar(E.Message), '錯誤', MB_OK OR MB_ICONERROR);

Result := False;

end;

end;

end;

//截圖

function Capture(FileName: String): Boolean;

begin

Result := False;

if hWndC <> 0 then

begin

SendMessage(hWndC, WM_CAP_SAVEDIB, 0, longint(pchar(FileName)));

Result := True;

end;

end;

//開始錄制

function BeginRecord(FileName: String): Boolean;

begin

Result := False;

try

if hWndC <> 0 then

begin

SendMessage(hWndC,WM_CAP_FILE_SET_CAPTURE_FILEA,0, Longint(pchar(FileName)));

SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0);

Result := True;

end;

except

on E: Exception do

begin

MessageBox(Application.Handle, PChar(E.Message), '錯誤', MB_OK OR MB_ICONERROR);

Result := False;

end;

end;

end;

//結束錄制

function EndRecord(): Boolean;

begin

Result := False;

if hWndC <> 0 then

begin

SendMessage(hWndC, WM_CAP_STOP, 0, 0);

Result := True;

end;

end;

end.

  • 上一篇:國產跨平臺組態軟件有哪些好用的?
  • 下一篇:如何使用USB接口將兩臺電腦連接,實現***享?
  • copyright 2024編程學習大全網