在最小化窗口上显示GUI自动化

时间:2010-10-28 13:57:27

标签: winforms winapi

作为免责声明,我对Win32开发并不熟悉。我想知道是否有任何方法可以自动化GUI应用程序的控制输入,如果该应用程序最小化。我见过的大多数自动化工具都专门使用窗口中的坐标偏移量(tlx,tly)。我不需要测试框架,我只是希望我自己的应用程序在最小化(不同 - 闭源)应用程序上引起一些操作。我谈到它,似乎越少越好。如何实现这一目标,我们对此表示赞赏。

3 个答案:

答案 0 :(得分:4)

好的,您熟悉默认最小化行为的最简单方法是使用简单的方法,例如: Calculator。只需启动它并使用Microsoft Spy++查看表示计算器窗口中某个按钮的窗口的属性。

就我而言,我看到了:

  • 处于正常状态:矩形(1096,222) - (1130,249),34x27
  • 处于最小化状态:矩形(-31911,-31839) - ( - 31877,-31812),34x27

因此,默认情况下,最小化会通过将窗口移动到很远的位置来更改窗口位置。如果你能够保留HWND,那么你仍然可以发送你需要的任何窗口信息。

要记住的事情:

  • 应用程序可以在最小化时自定义它们的行为,例如完全破坏窗户 - 切换到托盘。
  • 即使您成功将必要的消息发送到您需要的控件 - 应用程序的逻辑可能是一个障碍 - 例如它可能取决于IsWindowVisible的结果,它可能假设窗口矩形坐标总是正的,依此类推。

答案 1 :(得分:0)

您可以使用PostMessageSendMessage执行此操作,我知道它可能,因为我已经看过这样做的游戏机器人......

答案 2 :(得分:0)

有一种Python解决方案可以解决这些问题 - pywinauto

示例:Python - Control window with pywinauto while the window is minimized or hidden

虽然部分支持WinForms,但可以使用非识别控件的相对坐标来完成诸如静默点击(Click方法)之类的简单操作。