9

我正在尝试从弹出窗口中读取文本。

错误

标题总是一样的。我已经设法识别 hwnd 并使用下面的代码获取标题,但我不知道如何阅读内容。

import time

import win32gui, win32con


windows = []
def _MyCallback( hwnd, extra ):
  extra.append(hwnd)
win32gui.EnumWindows(_MyCallback, windows)

while True:
  window = win32gui.GetForegroundWindow()
  title = win32gui.GetWindowText(window)
  if title == 'Errors occurred':  print 'error window'
  time.sleep(1)

这是工作版本:

import time

import win32gui

while True:
  window = win32gui.GetForegroundWindow()
  title = win32gui.GetWindowText(window)
  if title == 'Errors occurred':
    control = win32gui.FindWindowEx(window, 0, "static", None)
    print 'text: ', win32gui.GetWindowText(control)
  time.sleep(1)
4

2 回答 2

5

如果它包含在窗口控件中,您将只能以编程方式读取此文本。您可以使用 Spy++ 轻松检查这一点。许多 GUI 框架不为其子控件使用窗口控件,或者仅对某些子控件使用窗口控件。

如果它是一个窗口控件,那么您可以通过调用GetWindow()和遍历子结构来识别它(显然您需要使用 win32gui 等效项)。

于 2011-05-02T21:22:14.487 回答
4

我无权访问您正在使用的框架或错误对话框,所以我只能概括地说您想要什么。

您需要FindWindowEx函数,并使用它来查找类名为“静态”的控件(或任何控件的类名)。我想这将是这条线:

control = win32gui.FindWindowEx(window, 0, "Static", 0)

这会将句柄返回到控件,然后您可以在其上使用 GetWindowText 来获取文本。

于 2011-05-02T21:12:47.150 回答