从弹出窗口中获取文本

时间:2011-05-02 21:04:22

标签: python winapi win32gui

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

errors

标题总是一样的。我已经设法识别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)

2 个答案:

答案 0 :(得分:5)

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

如果它是一个窗口控件,那么你可以通过调用GetWindow()并走过子结构来识别它(显然你需要使用win32gui等价物)。

答案 1 :(得分:4)

我无法访问您正在使用的框架或错误对话框,因此我只能说一般您想要的内容。

您需要FindWindowEx函数,并使用它来查找类名为“static”的控件(或控件的类名称)。我想这就行了:

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

返回控件的句柄,然后你可以在其上使用GetWindowText来获取文本。