如何通过AHK自动将剪贴板内容粘贴到新建记事本窗口?
解决AHK新建记事本并自动粘贴剪贴板内容的问题
问题分析
原脚本失效的核心原因:
WinWaitActive依赖固定窗口标题(如Untitled - Notepad),但不同语言环境下标题会变化(中文系统为无标题 - 记事本),导致等待条件不匹配- 记事本启动后,编辑控件可能未完全初始化,直接发送粘贴命令会失效
ControlSetText指定的RichEditD2DPT1并非记事本标准编辑控件类名,标准类名是Edit1,且需确保控件已加载完成
修正后的脚本(Ctrl+V粘贴方式)
#t:: Run "notepad.exe" WinWait, ahk_class Notepad ; 等待记事本窗口出现,不依赖标题 WinWaitActive, ahk_class Notepad ; 等待窗口激活 ControlWait, Edit1, ahk_class Notepad ; 确保编辑控件完全加载 ControlSend, Edit1, ^v, ahk_class Notepad return
关键改进点
- 用
ahk_class Notepad替代窗口标题,彻底避免语言环境差异问题 - 增加
ControlWait, Edit1等待控件加载,确保后续粘贴命令能被正确接收 - 保留
ControlSend, Edit1, ^v实现剪贴板粘贴,完全符合你的需求
ControlSetText的修正方案
如果想用直接写入的方式替代粘贴,同样需要确保控件存在并使用正确类名:
#t:: Run "notepad.exe" WinWait, ahk_class Notepad WinWaitActive, ahk_class Notepad ControlWait, Edit1, ahk_class Notepad ControlSetText, Edit1, %Clipboard%, ahk_class Notepad ; 直接写入剪贴板内容 return
内容的提问来源于stack exchange,提问作者Pingui
相关产品推荐
相关产品推荐

