发送字符串这个最基本的需求,在AutoHotkey里实现却不容易,
主要问题就是中文输入法状态下,用Send发送内容,可能会变成打字而输出不正确的内容,
可能有些输入法没这问题,我用极点五笔这方面是被影响了。
后来发现用PostMessage 0x102(WM_CHAR)消息可完美解决此问题,效果很好,一般发送内容都不再依赖剪切板了。
大量的内容还是推荐剪切板粘贴。
sendP(str, winTitle:="A") { BlockInput(true) ctl := ControlGetFocus(winTitle) if ctl { loop parse, str PostMessage(0x102, ord(A_LoopField),, ctl, winTitle) } else { loop parse, str PostMessage(0x102, Ord(A_LoopField),,, winTitle) ;必须留空 } BlockInput(false) }
标准窗口能获取控件的,需要传入控件参数才行,而有些窗口(比如QQ)无法获取控件的,则控件的参数直接留空。