privart
hcal :HWND;
--------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
begin
//操作対象として電卓を起動
ShellExecute(Handle, 'OPEN', 'C:\WINDOWS\System32\calc.exe',
nil, nil, SW_NORMAL);
Sleep(1000);
//電卓のウィンドウハンドルを取得
hcal :=FindWindow(nil, '電卓');
if hcal =0 then
ShowMessage('Error!');
end;
//電卓が起動していればメッセージを送って終了させる
procedure TForm1.FormDestroy(Sender: TObject);
begin
if hcal <> 0 then
SendMessage(hcal, WM_CLOSE, 0, 0);
end;
//-----------電卓をプログラムで操作--------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
//最大化する
ShowWindow(hcal, SW_MAXIMIZE);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
h5 :HWND;
begin
//「5」のボタンのハンドルを取得し擬似的に押す
h5 :=FindWindowEx(hcal, 0, nil, '5');
if h5 <> 0 then
begin
SendMessage(h5, WM_LBUTTONDOWN, 0, 0);
Sleep(100);
SendMessage(h5, WM_LBUTTONUP, 0, 0);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
hBack :HWND;
R :TRect;
begin
//意味はないですが押すたびに「Back」ボタンを大きくします
hBack :=FindWindowEx(hcal, 0, nil, 'Back');
if hBack <> 0 then
begin
Windows.GetClientrect(hBack, R);
SetWindowPos(hBack, 0, 0, 0, R.Right -R.Left +5, R.Bottom -R.Top +5,
SWP_NOMOVE or SWP_NOZORDER);
end;
end;
|