2010-12-12 100 views
1

這裏我的功能:如何從窗口中獲取文本?

def getEditText(hwnd): 
    result = [] 
    bufferlength = struct.pack('i', 255) 
    linecount = win32gui.SendMessage(hwnd, win32con.EM_GETLINECOUNT, 0, 0) 
    print"--- linecount :",linecount 

    for line in range(linecount): 
     linetext = bufferlength + "".ljust(253)   
     linelength = win32gui.SendMessage(hwnd, win32con.EM_GETLINE, line, linetext) 
myLigne=linetext[:linelength] 
print" ",myLigne 
     result.append(myLigne) 
    return result 
resultat=getEditText(hwmdTexte) 

我想從一個插件的文本,但是,這並不工作。 我的應用程序的小部件有幾行,但我有linecount = 0,當然沒有文字... 你能幫我。

+1

1.格式化似乎中斷。 2.什麼窗口小部件,什麼GUI工具包等? – delnan 2010-12-12 22:27:48

+0

首先,驗證你的'hwnd'是指一個編輯控件(而不是一個包含編輯控件等的窗口)。使用Spy ++或類似的工具來確認你的假設。 – atzz 2010-12-13 11:27:07

+0

感謝您的回答。我也認爲控制有問題。不過,我用兩種不同的工具(WinID和AutoIt)進行了檢查。該控件的名稱是TEXTE。此外,我試過一個for循環,以防萬一。對於handle,nom,classe控件: resultat = GetTex(句柄)還有一件事我不明白:爲什麼使用WinID和AutoIt我可以得到一些應用程序的文本,但沒有與這一個... – chris33 2010-12-14 09:47:34

回答

0

感謝您的回答。我剛試過def

GetText(hwnd): 
    buf_size = 1 + win32gui.SendMessage(hwnd, win32con.WM_GETTEXTLENGTH, 0, 0) 
    buffer = win32gui.PyMakeBuffer(buf_size) 
    win32gui.SendMessage(hwnd, win32con.WM_GETTEXT, buf_size, buffer) 
    return buffer[:buf_size]  

但是,這並沒有得到我的小部件的文本。此函數返回NUL ...