Winforms 最小化窗口上的WIndows GUI自动化

Winforms 最小化窗口上的WIndows GUI自动化,winforms,winapi,Winforms,Winapi,作为免责声明,我对Win32开发一点也不熟悉。我想知道,如果GUI应用程序被最小化,是否有任何方法可以自动控制GUI应用程序的输入。我见过的大多数自动化工具都专门使用窗口的坐标偏移(tlx,tly)。我不需要一个测试框架,我只想让我自己的应用程序在最小化(不同的封闭源代码)的应用程序上执行一些操作。我谈论得越多,可能性就越小。任何关于如何实现这一点的意见都是值得赞赏的。您可能可以使用,或者,我确实知道这是可能的,因为我见过做这类事情的游戏机器人。好的,您了解默认最小化行为的最简单方法是使用一些简

作为免责声明,我对Win32开发一点也不熟悉。我想知道,如果GUI应用程序被最小化,是否有任何方法可以自动控制GUI应用程序的输入。我见过的大多数自动化工具都专门使用窗口的坐标偏移(tlx,tly)。我不需要一个测试框架,我只想让我自己的应用程序在最小化(不同的封闭源代码)的应用程序上执行一些操作。我谈论得越多,可能性就越小。任何关于如何实现这一点的意见都是值得赞赏的。

您可能可以使用,或者,我确实知道这是可能的,因为我见过做这类事情的游戏机器人。

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

就我而言,我看到:

  • 正常状态下:矩形(1096222)-(1130249),34x27
  • 处于最小化状态:矩形(-31911,-31839)-(31877,-31812),34x27
因此,默认情况下,最小化会通过将窗口移动很远来更改窗口位置。如果您能够保留HWND,那么您仍然能够发送所需的任何窗口消息

要记住的事情:

  • 应用程序可以自定义其最小化行为,例如完全破坏窗口-切换到托盘
  • 即使您成功地向所需的控件发送了必要的消息-应用程序的逻辑可能是一个障碍-例如,它可能取决于IsWindowVisible的结果,它可能假设窗口矩形坐标始终为正,等等

    • 有一个Python解决方案可以解决这些问题-

      例如:

      尽管WinForms部分受支持,但可以使用未识别控件的相对坐标来完成简单操作,如静默单击(
      click
      method)