如何从窗口中获取文本?

如何从窗口中获取文本?

问题描述:

这里我的功能:如何从窗口中获取文本?

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

感谢您的回答。我刚试过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 ...