Holen Sie sich Text aus dem Popup -Fenster
Frage
Ich versuche den Text aus einem Popup -Fenster zu lesen.
Der Titel ist immer der gleiche. Ich habe es geschafft, das HWND zu identifizieren und den Titel mit dem folgenden Code zu erhalten, aber ich kann nicht herausfinden, wie man den Inhalt liest.
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)
Hier ist die Arbeitsversion:
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)
Lösung
Ich habe keinen Zugriff auf das Framework oder das von Ihnen verwendete Fehlerdialog, sodass ich nur im Allgemeinen sagen kann, was Sie wollen.
Du brauchst das FindWindowex Funktion und verwenden Sie es, um eine Kontrolle zu finden, deren Klassenname "statisch" ist (oder wie auch immer der Klassenname der Kontrolle ist). Ich stelle mir vor, das wäre die Zeile:
control = win32gui.FindWindowEx(window, 0, "Static", 0)
Das gibt den Handle an die Steuerung zurück, und Sie können dann GetWindowtext dazu verwenden, um den Text zu erhalten.
Andere Tipps
Sie können diesen Text nur programmgesteuert lesen, wenn er in einer Fenstersteuerung enthalten ist. Sie können dies problemlos mit Spy ++ überprüfen. Viele GUI -Frameworks verwenden keine Fenstersteuerungen für ihre Kindersteuerung oder nur für einige Kinder Fenstersteuerungen.
Wenn es sich um ein Fenstersteuer handelt, können Sie sie durch Anrufe identifizieren GetWindow()
und die Kinderstruktur zu gehen (offensichtlich müssen Sie das Win32gui -Äquivalent verwenden).