【问题标题】:Win32API replicate Spy++ window-information capabilities within PythonWin32API 在 Python 中复制 Spy++ 窗口信息功能
【发布时间】:2011-03-24 17:05:44
【问题描述】:

我有一个第三方 GUI 程序,我用 Python 类(使用 ctypes)进行包装。

是否有可以执行以下操作的 Win32 API 函数?

1) 获取给定屏幕位置窗口的窗口句柄。

2) 获取带有给定标题的按钮或静态窗口的窗口句柄。

3) 将文本发送到编辑窗口。

4) 从 RICHEDIT 实例中提取文本。

我有 WinSpy(一个 Spy++ 类型的应用程序)并且知道可以使用该工具获取窗口句柄和标题,但我需要在 Python 中工作的东西。

我假设 Python 的 ctypes 让我可以访问 Win32 API 中的任何函数,所以我一直在扫描 MSDN(尤其是 this windows/messages section)。我似乎找不到任何有效的方法。

谢谢,

迈克

【问题讨论】:

  • 抱歉,我认为这更像是一个 Windows API 问题。

标签: winapi user32


【解决方案1】:

我很难找到一个非常简单的带有 pywin32 的 WM_GETTEXT 示例,并且认为这里可能是添加一个的好地方,因为它回答了部分问题:

MAX_LENGTH = 1024

handle = # A handle returned from FindWindowEx, for example

buffer = win32gui.PyMakeBuffer(MAX_LENGTH)
length = win32gui.SendMessage(handle, win32con.WM_GETTEXT, MAX_LENGTH, buffer)

result = buffer[:length]

【讨论】:

    【解决方案2】:
    1. WindowFromPoint

    2. FindWindowEx 查找具有给定类和名称(标题)的窗口的子窗口。重复操作以打通每个父子间接。 EnumChildWindows 也很有帮助。

    3. SendMessageTimeout + WM_SETTEXT

    4. SendMessageTimeout + WM_GETTEXTEM_STREAMOUT

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      相关资源
      最近更新 更多