Frage

Ich versuche den Text aus einem Popup -Fenster zu lesen.

errors

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)
War es hilfreich?

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top