我希望能够查看另一个应用程序显示的信息,然后“点击”不同的按钮以自动化处理过程。我以前从未做过这个,希望您能就从哪里开始和/或提供链接给予任何建议。
Procedure PressButtonXY(handleWnd : HWND;X,Y : Integer); //X,Y are relative to the client area, you can use ScreenToClient to obtain this.
var
LParam : Integer;
begin
LParam := MakeLong(X, Y);
PostMessage(handleWnd, WM_LBUTTONDOWN, MK_LBUTTON, LParam);
PostMessage(handleWnd, WM_LBUTTONUP, MK_LBUTTON, LParam);
end;
使用一些SendMessage()
,您可以模拟用户与任何程序的交互。这是所有“自动点击”或宏程序的核心。
WinSight(Borland\Delphi7\Bin\WS32.EXE)非常有用,可以获取要与SendMessage()
一起使用的内容ID。您还需要使用FindWindow()
。
需要注意的一点是,在Vista(或windows 7)上跨应用程序边界发送消息并不总是有效的。如果一个应用程序在另一个安全上下文中启动,例如以管理员身份运行,那么来自另一个安全上下文的应用程序的发布消息将被阻止。