APIを使用してタイマーイベントを自作する

コンポーネントを作る時などには役に立つと思います。


■必要なコンポーネント 

■使用するAPI関数

■ソースは下記のようになります。

■初期宣言
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private 宣言 }
TimerID : Integer;
public
{ Public 宣言 }
end;

var
Form1: TForm1;

function TimerProc(Dialog: HWnd; Msg: Longint; idEvent: UINT; dwTime:DWORD):Boolean;stdcall;

■ボタンをクリックしたら1秒毎にBeep音を鳴らす。
procedure TForm1.Button1Click(Sender:TObject);
begin
 //タイマー始動 
 TimerID := SetTimer(Form1.Handle, 0, 1000, @TimerProc);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 //タイマー終了
 KillTimer(Form1.Handle, TimerID) ;
end;

function TimerProc(Dialog: HWnd; Msg: Longint; IDEvent: UINT; dwTime: DWORD): Boolean;
begin
 Beep;
end;





Win32 APIのページへ



ホーム PV ランキング