Question

Je suis en train de lire le texte à partir d'une fenêtre pop-up.

erreurs

Le titre est toujours le même. J'ai réussi à identifier le hwnd et obtenir le titre avec le code ci-dessous, mais je ne peux pas comprendre comment lire le contenu.

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)

Voici la version de travail:

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)
Était-ce utile?

La solution

Je n'ai pas accès au cadre ou la boîte de dialogue d'erreur que vous utilisez, donc je ne peux dire en général ce que vous voulez.

Vous avez besoin de la fonction FindWindowEx , et l'utiliser pour trouver un contrôle dont le nom de classe est « statique » (ou quel que soit le nom de la classe du contrôle est). J'imagine que ce serait la ligne:

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

qui retourne la poignée à la commande, et vous pouvez ensuite utiliser GetWindowText sur cela pour obtenir le texte.

Autres conseils

Vous ne pourrez lire ce texte si programme il est contenu dans un contrôle fenêtré. Vous pouvez facilement vérifier avec Spy ++. De nombreux cadres de l'interface graphique ne pas utiliser les contrôles fenêtrés pour leurs contrôles enfants, ou seulement utiliser des contrôles fenêtrés pour certains enfants.

S'il est un contrôle fenêtré vous pouvez alors identifier en appelant GetWindow() et la marche de la structure de l'enfant (de toute évidence, vous devez utiliser l'équivalent win32gui).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top