我想“查看”另一个应用程序显示的信息并“单击”不同的按钮来自动化一个过程。以前从未这样做过,并希望获得有关从哪里开始和/或链接的任何建议。
问问题
7953 次
4 回答
7
有了一些SendMessage()
,您可以模拟用户与您希望的任何程序进行交互。这是所有“自动点击”或宏程序的核心。
WinSight (Borland\Delphi7\Bin\WS32.EXE) 可能对获取要与SendMessage()
. 您还必须使用FindWindow()
.
于 2009-08-19T02:35:32.367 回答
7
您可以使用WinDowse(免费软件)获取有关任何窗口的必要技术信息。
此示例显示如何使用 x,y 坐标模拟单击按钮
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;
于 2009-08-19T05:11:57.957 回答
3
在 Windows 平台上自动化另一个应用程序的正确方法是使用UI 自动化框架。它支持具有相同功能级别的.Net和COM API。
免责声明:我已经很多年没有接触过 Delphi,所以我不知道哪一个更适合您使用。
请注意,UI 自动化仅适用于 XP 及更高版本;如果出于某种原因您需要在 Win2k 或 Win9x 上自动化应用程序,您应该查看Windows Active Accessibility API。
于 2009-08-19T03:11:43.260 回答
1
需要注意的一件事是,跨应用程序边界发布消息并不总是适用于 Vista(或 Windows 7)。如果应用程序在另一个安全上下文中启动,例如以管理员身份运行,则来自另一个安全上下文中的另一个应用程序的发布消息将被阻止。
于 2009-08-20T16:45:25.223 回答