pywin32 获取 windows 的窗体内文本框的内容
用 spy++去确认找到了文本框的句柄了。
用函数 win32gui.SendMessage 获取不了文本框的文本内容,用 str 类型的参数接收获取的内容的话没有获取到东西,而用 PyBuffer 类型去获取则得到类似于 16 进制的东西。
希望能找到解决方案。 以下是代码:
1 from win32gui import * 2 from win32api import * 3 from win32process import * 4 import win32con 5 6 import time 7 8 time.sleep(3) 9 10 # 获取窗体句柄 11 hWnd = GetForegroundWindow() 12 print('hownd: ', hWnd) 13 14 FormThreadID = GetCurrentThreadId() 15 print('FormThreadID: ', FormThreadID) 16 17 CWndThreadID = GetWindowThreadProcessId(hWnd) 18 print('CWndThreadID: ', CWndThreadID) 19 20 AttachThreadInput(CWndThreadID[0], FormThreadID, True) 21 22 # 获取光标所在文本框句柄 23 hWnd = GetFocus() 24 print('hWnd: ', hWnd) 25 26 AttachThreadInput(CWndThreadID[0], FormThreadID, False) 27 28 # SendMessage(hWnd, win32con.WM_SETTEXT, 0, "mextb1860 第一个文本框") 29 30 # 文本框内容长度 31 length = SendMessage(hWnd, win32con.WM_GETTEXTLENGTH)+1 32 print('Length: ', length) 33 34 buf = '0'*length 35 # 生成buffer对象 36 # buf = PyMakeBuffer(length) 37 38 # 获取文本框内容 39 print('get: ', SendMessage(hWnd, win32con.WM_GETTEXT, length, buf)) 40 41 print('text: ', buf)