Obtener texto de la ventana emergente

Estoy tratando de leer el texto desde una ventana emergente.

errores

El título es siempre el mismo. Me las arreglé para identificar el hwnd y obtener el título con el siguiente código, pero no puedo averiguar cómo leer el contenido.

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) 

Aquí está la versión de trabajo:

 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) 

No tengo acceso al marco o al cuadro de diálogo de error que está utilizando, por lo que solo puedo decir en general lo que desea.

Necesita la función FindWindowEx y la usa para encontrar un control cuyo nombre de clase sea ‘estático’ (o cualquiera que sea el nombre de clase del control). Me imagino que esta sería la línea:

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

Eso devuelve el identificador al control y, a continuación, puede usar GetWindowText en eso para obtener el texto.

Solo podrá leer este texto mediante progtwigción si está contenido en un control de ventana. Puedes verificar esto fácilmente con Spy ++. Muchos marcos de la GUI no usan controles de ventana para sus controles secundarios, o solo usan controles de ventana para algunos niños.

Si se trata de un control con ventana, puede identificarlo llamando a GetWindow() y recorriendo la estructura secundaria (obviamente, debe usar el equivalente de win32gui).