unit
UnitMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, XPMan;
type
TFormMain =
class
(TForm)
LabelDescription: TLabel;
PanelVideo: TPanel;
AutoCapturingTimer: TTimer;
RefreshingTimer: TTimer;
TrackBar1: TTrackBar;
LabelInterval: TLabel;
ButtonHelp: TImage;
procedure
FormClose(Sender: TObject;
var
Action: TCloseAction);
procedure
FormShow(Sender: TObject);
procedure
AutoCapturingTimerTimer(Sender: TObject);
procedure
RefreshingTimerTimer(Sender: TObject);
procedure
TrackBar1Change(Sender: TObject);
procedure
ButtonHelpClick(Sender: TObject);
private
public
end
;
var
FormMain: TFormMain;
hWndC: THandle;
implementation
const
WM_CAP_START = WM_USER;
WM_CAP_DRIVER_CONNECT = WM_CAP_START +
10
;
WM_CAP_DRIVER_DISCONNECT = WM_CAP_START +
11
;
WM_CAP_SAVEDIB = WM_CAP_START +
25
;
WM_CAP_GRAB_FRAME = WM_CAP_START +
60
;
{$R *.dfm}
function
capCreateCaptureWindowA(lpszWindowName:
PCHAR
;
dwStyle:
longint
;
x:
integer
;
y:
integer
;
nWidth:
integer
;
nHeight:
integer
;
ParentWin: HWND;
nId:
integer
): HWND;
stdcall external
'AVICAP32.DLL'
;
procedure
TFormMain
.
FormClose(Sender: TObject;
var
Action: TCloseAction);
begin
SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT,
0
,
0
);
end
;
procedure
TFormMain
.
FormShow(Sender: TObject);
begin
hWndC := capCreateCaptureWindowA(
'My Capture Window'
,
WS_CHILD
or
WS_VISIBLE,
PanelVideo
.
Left,
PanelVideo
.
Top,
PanelVideo
.
Width,
PanelVideo
.
Height,
FormMain
.
Handle,
0
);
if
hWndC <>
0
then
begin
SendMessage(hWndC, WM_CAP_DRIVER_CONNECT,
0
,
0
);
RefreshingTimer
.
Enabled :=
True
;
AutoCapturingTimer
.
Enabled :=
True
;
end
;
end
;
procedure
TFormMain
.
AutoCapturingTimerTimer(Sender: TObject);
var
SystemDateCurrent, SystemTimeCurrent: TDateTime;
FileName:
string
;
begin
SystemDateCurrent := Date; SystemTimeCurrent := Time;
FileName := FormatDateTime(
'dd.mm.yyyy'
, SystemDateCurrent) +
' '
+ FormatDateTime(
'hh_m_ss'
, SystemTimeCurrent) +
'.bmp'
;
SendMessage(hWndC, WM_CAP_SAVEDIB,
0
,
longint
(
pchar
(FileName)))
end
;
procedure
TFormMain
.
RefreshingTimerTimer(Sender: TObject);
begin
SendMessage(hWndC, WM_CAP_GRAB_FRAME,
0
,
0
);
end
;
procedure
TFormMain
.
TrackBar1Change(Sender: TObject);
begin
if
TrackBar1
.
Position =
0
then
begin
LabelInterval
.
Caption :=
'Выключено'
;
AutoCapturingTimer
.
Interval :=
0
;
Exit;
end
;
LabelInterval
.
Caption :=
'Задержка: '
+ IntToStr(TrackBar1
.
Position) +
' сек.'
;
AutoCapturingTimer
.
Interval := TrackBar1
.
Position *
1000
;
end
;
procedure
TFormMain
.
ButtonHelpClick(Sender: TObject);
begin
ShowMessage(
'Автор программы - Bogomolov Igor (aka Метрозацепер), 18.05.2013, zatseper@mail.ru'
)
end
;
end
.