请大家帮忙分析下面这段程序,干什么用的,怎么用?(30分)

  • 主题发起人 主题发起人 sbh410
  • 开始时间 开始时间
S

sbh410

Unregistered / Unconfirmed
GUEST, unregistred user!
关于视频的。就是我想做一个视频监视器。能够把操作都录下来,然后存成AVI格式。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
OpenVideo: TButton;
CloseVideo: TButton;
GrabFrame: TButton;
SaveBMP: TButton;
StartAVI: TButton;
StopAVI: TButton;
SaveDialog1: TSaveDialog;
procedure FormCreate(Sender: TObject);
procedure OpenVideoClick(Sender: TObject);
procedure CloseVideoClick(Sender: TObject);
procedure GrabFrameClick(Sender: TObject);
procedure SaveBMPClick(Sender: TObject);
procedure StartAVIClick(Sender: TObject);
procedure StopAVIClick(Sender: TObject);
private
{ Private declarations }
hWndC : THandle;
CapturingAVI : bool;
public
{ Public declarations }
end;


var
Form1: TForm1;

implementation

{$R *.DFM}

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;

function capCreateCaptureWindowA(lpszWindowName : PCHAR;
dwStyle : longint;
x : integer;
y : integer;
nWidth : integer;
nHeight : integer;
ParentWin : HWND;
nId : integer): HWND;
STDCALL EXTERNAL 'AVICAP32.DLL';

procedure TForm1.FormCreate(Sender: TObject);
begin

CapturingAVI := false;
hWndC := 0;
SaveDialog1.Options :=
[ofHideReadOnly, ofNoChangeDir, ofPathMustExist]
end;


procedure TForm1.OpenVideoClick(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);
if hWndC <> 0 then

SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
end;


procedure TForm1.CloseVideoClick(Sender: TObject);
begin

if hWndC <> 0 then
begin

SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
hWndC := 0;
end;

end;


procedure TForm1.GrabFrameClick(Sender: TObject);
begin

if hWndC <> 0 then

SendMessage(hWndC, WM_CAP_GRAB_FRAME, 0, 0);
end;


procedure TForm1.SaveBMPClick(Sender: TObject);
begin

if hWndC <> 0 then
begin

SaveDialog1.DefaultExt := 'bmp';
SaveDialog1.Filter := 'Bitmap files (*.bmp)|*.bmp';
if SaveDialog1.Execute then

SendMessage(hWndC,
WM_CAP_SAVEDIB,
0,
longint(pchar(SaveDialog1.FileName)));
end;

end;


procedure TForm1.StartAVIClick(Sender: TObject);
begin

if hWndC <> 0 then
begin

SaveDialog1.DefaultExt := 'avi';
SaveDialog1.Filter := 'AVI files (*.avi)|*.avi';
if SaveDialog1.Execute then
begin

CapturingAVI := true;
SendMessage(hWndC,
WM_CAP_FILE_SET_CAPTURE_FILEA,
0,
Longint(pchar(SaveDialog1.FileName)));
SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0);
end;

end;

end;


procedure TForm1.StopAVIClick(Sender: TObject);
begin

if hWndC <> 0 then
begin

SendMessage(hWndC, WM_CAP_STOP, 0, 0);
CapturingAVI := false;
end;

end;


end.

 
收了~ 慢慢看去!
 
好的,但是不好用啊。你先看一下了。
 
你这样是没用的,他用了一个DLL,你不知道DLL中的程序是怎么写的,这儿基本上就是播放,
停止,保存等功能,主要的功能已经在DLL中了!:(,否则我也想学学
 
'AVICAP32.DLL'是DELPHI自带的,你说他在里面加东西了?
 
呵,我孤陋寡闻,出丑了,不好意思,再去看看
 
好的,谢谢了,我却不知道这个程序能做什么,能不能进行录象,然后存成AVI格式的文件。
可以看。就是做一个监视的工具了?
 
换个控件就行了。到深历险去找找。
 
来个提示,什么控件。
 
是一个视频捕获程序
DELPHII6多媒体实例编程中第8章的例子
我试过了不好用
 
是的,是不好用,我想不用什么捕捉卡的,就是这样能够搞视频捕捉的。谁能给我个例子啊
 
你是想记录消息还是屏幕
 
我想记录屏幕。当然有消息也可以了
 
多人接受答案了。
 
后退
顶部