发送字符串这个最基本的需求,在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)无法获取控件的,则控件的参数直接留空。

12-27 18:20