procedure TForm1.BitBtn1Click(Sender: TObject); var h_wnd:HWND; h_btn:HWND; buf:array[0..255] of char; begin h_wnd:=findwindow(nil,'另一个程序窗口标题'); h_btn:=getwindow(h_wnd,GW_CHILD); while h_btn <> 0 do begin getwindowtext(h_btn,buf,255); if pos('按钮名称',buf) > 0 then break; h_btn:=getwindow(h_btn,GW_HWNDNEXT); end; sendmessage(h_btn,WM_LBUTTONDOWN,1,1); sendmessage(h_btn,WM_LBUTTONUP,1,1); end;
除法按钮你可以用Button1.onclick(Nil)or Button1.onClick(Sender)如果有sender的话
FindWindow是WINDOWS API,Delphi 的Windows SDK help里面有很详细的帮助啊
H1,H2:THandle;
begin
H1:=FindWindow('TForm1','Form1');
H2:=Findwindowex(H1,0,'TButton','Button2');
SendMessage(H2,bm_click,0,0);
end;
H1,H2:THandle;
begin
H1:=FindWindow('TForm1','Form1');
H2:=Findwindowex(H1,0,'TButton','Button2');
SendMessage(H2,bm_click,0,0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage('asdfsf');
end;
FindWindowEx 寻找某个窗体下的子窗体!!查看 API 手册对按键发 CLICK 事件??
对它发鼠标消息: PostMessage(TWnd,WM_LBUTTONDOWN, 0, MAKEWPARAM(184,17));
PostMessage(TWnd,WM_LBUTTONUP, 0, MAKEWPARAM(184,17));TWnd 是按键的句柄,
184,17 是按键非精确坐标
FindWindowEx 寻找某个窗体下的子窗体!!查看 API 手册对按键发 CLICK 事件??
对它发鼠标消息: PostMessage(TWnd,WM_LBUTTONDOWN, 0, MAKEWPARAM(184,17));
PostMessage(TWnd,WM_LBUTTONUP, 0, MAKEWPARAM(184,17));TWnd 是按键的句柄,
184,17 是按键非精确坐标
procedure TForm1.BitBtn1Click(Sender: TObject);
var
h_wnd:HWND;
h_btn:HWND;
buf:array[0..255] of char;
begin h_wnd:=findwindow(nil,'另一个程序窗口标题');
h_btn:=getwindow(h_wnd,GW_CHILD);
while h_btn <> 0 do
begin
getwindowtext(h_btn,buf,255);
if pos('按钮名称',buf) > 0 then
break;
h_btn:=getwindow(h_btn,GW_HWNDNEXT);
end;
sendmessage(h_btn,WM_LBUTTONDOWN,1,1);
sendmessage(h_btn,WM_LBUTTONUP,1,1);
end;