sendmessage实现点击其他程序上的按钮
下面的代码是用QQ登录来作实验的。
procedure TForm1.Button3Click(Sender: TObject);
var
h,h1:THandle;
begin
h:=findwindow(nil,'QQ用户登录');//h是登录窗口句柄
if h<>0 then
begin
h1:=findwindowex(h,0,nil,'登录');//h1是登录按钮的句柄
edit3.Text:=inttostr(h1);
SENDmessage(h,WM_COMMAND,MAKELONG(GETDLGCTRLID(H1),BN_CLICKED),0);
end
else
showmessage('false');
end;
程序实现的步骤是
首先查找QQ登录窗口的句柄,然后根据这个句柄在查找其窗口内名为“登录”的按钮的句柄。
这个时候就可以通过按钮的句柄对其进行操作。
这里主要在sendmessage的参数
我最早时候用sendmessage(h1,BN_CLICKED,0,0);
结果无效,后来才知道,BN_CLICKED是notification消息~ 必须要有ID……
使用sendmessage(h1,WM_LBUTTONDOWN,0,0);发送鼠标左键点击消息,也是无效不知道什么原因