个人版本 win11 64 python3.7 pywin32 306 pypiwin32 223
想要在记事本输入内容,主要是找到记事本编辑窗口的句柄
建议先使用软件inspect.exe或者spy++查看窗口信息
本人使用inspect.exe,win11系统
下载使用的博客推荐http://t.csdnimg.cn/7Gkt8
安装完后,先手动用记事本方式打开想打开的文档,然后打开inspect.exe
运行之后,左边一栏会出现所有的桌面窗口,找到你想找的文档记事本窗口根据下面图片,我的窗口是“新建文本文档.txt -Notepad”
点击记事本窗口你会看到详细信息,然后你可以根据窗口名和类名锁定记事本句柄
(各个句柄记得打印一下看看是否有效,如果是0,那么说明没找到句柄)
输入代码,锁定文档记事本句柄,别忘记打印一下查看是否有效
win = win32gui.FindWindow('Notepad', '新建文本文档.txt - Notepad')
找到记事本句柄之后,恭喜你成功一半,然后接着找到文本编辑窗口
看上面的图片,我的文本编辑器窗口是文档记事本窗口的子窗口的子窗口,所以需要找两次句柄
输入代码,锁定文本编辑器窗口的句柄
tid = win32gui.FindWindowEx(win, None, 'NotepadTextBox', None) # 主窗口下的子窗口
td = win32gui.FindWindowEx(tid, None, 'RichEditD2DPT', None) # 子窗口下的编辑窗口
然后就可以输入内容了,完整代码是
import win32gui
import win32con
win = win32gui.FindWindow('Notepad', '新建文本文档.txt - Notepad') # 找到这个文件,里面的参数都是再inspect.exe 里面找的
tid = win32gui.FindWindowEx(win, None, 'NotepadTextBox', None) # 主窗口下的子窗口
td = win32gui.FindWindowEx(tid, None, 'RichEditD2DPT', None) # 子窗口下的编辑窗口
print(tid, win, td) # 查看各个句柄是否有效
# 写入内容
content = "这是要输入的内容"
win32gui.SendMessage(td, win32con.WM_SETTEXT, None, content)
# 发送回车键消息
win32gui.PostMessage(td, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)