2011-05-02 139 views
9

我試圖從彈出窗口中讀取文本。從彈出窗口中獲取文本

errors

標題總是相同的。我已經設法識別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) 

這裏的工作版本:

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) 

回答

4

我沒有訪問框架或正在使用的錯誤對話框,所以我只能說一般,你想要什麼。

您需要FindWindowEx函數,並使用它來查找類名爲「static」(或任何控件的類名稱)的控件。我想這將是該行:

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

手柄返回控制,然後就可以使用上GetWindowText函數來獲取文本。

+0

是的,這有訣竅。我在問題中發佈了工作示例。謝謝。 – 2011-05-02 21:25:33

5

只有當它包含在窗口控件中時,才能以編程方式閱讀此文本。您可以使用Spy ++輕鬆檢查。許多GUI框架不爲其子控件使用窗口控件,或者僅爲某些子控件使用窗口控件。

如果它是一個窗口控件,那麼你可以通過調用GetWindow()並行走子結構來識別它(顯然你需要使用win32gui等價物)。