解决pywin32无法在记事本中自动输入内容的问题

个人版本 win11 64 python3.7 pywin32 306 pypiwin32 223

想要在记事本输入内容,主要是找到记事本编辑窗口的句柄
建议先使用软件inspect.exe或者spy++查看窗口信息
本人使用inspect.exe,win11系统
下载使用的博客推荐http://t.csdnimg.cn/7Gkt8

安装完后,先手动用记事本方式打开想打开的文档,然后打开inspect.exe
运行之后,左边一栏会出现所有的桌面窗口,找到你想找的文档记事本窗口根据下面图片,我的窗口是“新建文本文档.txt -Notepad”
解决pywin32无法在记事本中自动输入内容的问题_第1张图片
点击记事本窗口你会看到详细信息,然后你可以根据窗口名和类名锁定记事本句柄
(各个句柄记得打印一下看看是否有效,如果是0,那么说明没找到句柄)
解决pywin32无法在记事本中自动输入内容的问题_第2张图片

输入代码,锁定文档记事本句柄,别忘记打印一下查看是否有效

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)

你可能感兴趣的:(windows,python)