winforms - 最小化窗口上的 WINdows GUI 自动化

标签 winforms winapi

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

最佳答案

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

就我而言,我看到:

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

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

    要记住的事情:
  • 应用程序可以自定义其最小化行为,例如完全破坏窗口 - 切换到托盘。
  • 即使您成功地将必要的消息发送到您需要的控件 - 应用程序的逻辑可能是一个障碍 - 例如它可能取决于 IsWindowVisible 的结果,它可能假设窗口矩形坐标始终为正等等。
  • 关于winforms - 最小化窗口上的 WINdows GUI 自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4043586/

    相关文章:

    winapi - 客户端断开连接后如何使命名管道不忙?

    c++ - 使用 DEFAULT_GUI_FONT 设置 HFONT 的字体大小

    windows - 打开主菜单总是模态操作吗?

    C# WinForms : Should I use a web browser control

    c# - 如何从返回到文本框的 SQL 查询中将数字四舍五入到小数点后两位

    c# - 单击以打开项目(指向选择)

    c# - 将应用程序的音频重新路由到另一个音频设备

    c# - 从分离的类到 winform 显示带有 DataSet 的数据库项目到 Datagridview

    c - ANSI C 和 WinAPI : how to get a handle to the window from hook procedure?

    c++ - Win32 : Bring a window to top