从弹出窗口中获取文本

Jes*_*dge 9 python winapi win32gui

我正试图从弹出窗口中读取文本.

错误

标题总是一样的.我已经设法识别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)
Run Code Online (Sandbox Code Playgroud)

这是工作版本:

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)
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 5

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

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


Mat*_*att 4

我无权访问您正在使用的框架或错误对话框,因此我只能笼统地说出您想要的内容。

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

control = win32gui.FindWindowEx(window, 0, "Static", 0)
Run Code Online (Sandbox Code Playgroud)

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