如何从窗口中获取文本?
问题描述:
这里我的功能:如何从窗口中获取文本?
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,当然没有文字... 你能帮我。
答
感谢您的回答。我刚试过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 ...
1.格式化似乎中断。 2.什么窗口小部件,什么GUI工具包等? – delnan 2010-12-12 22:27:48
首先,验证你的'hwnd'是指一个编辑控件(而不是一个包含编辑控件等的窗口)。使用Spy ++或类似的工具来确认你的假设。 – atzz 2010-12-13 11:27:07
感谢您的回答。我也认为控制有问题。不过,我用两种不同的工具(WinID和AutoIt)进行了检查。该控件的名称是TEXTE。此外,我试过一个for循环,以防万一。对于handle,nom,classe控件: resultat = GetTex(句柄)还有一件事我不明白:为什么使用WinID和AutoIt我可以得到一些应用程序的文本,但没有与这一个... – chris33 2010-12-14 09:47:34