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

文章介绍了如何在Windows11环境下,利用Python3.7和PyWin32库,通过找到记事本窗口句柄并定位到文本编辑区域,实现自动化输入内容,包括发送WM_SETTEXT和WM_KEYDOWN消息。
摘要由CSDN通过智能技术生成

个人版本 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)

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虫虫仙人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值