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)

 

posted @ 2018-08-26 10:53  Jaww  阅读(8746)  评论(0编辑  收藏  举报