; 发送字符串这个最基本的需求,在 AutoHotkey 里完美实现却有点坎坷,
; 主要问题就是中文输入法状态下,用 Send 发送内容,可能会变成打字而输出不正确的内容,
; 中文状态下,句号默认是。,而有的软件热键是.,中文状态下按键会无效,用SendText也会有其他问题

; 来源:https://www.cnblogs.com/hyaray/p/11899920.html

; 于是需要一个更底层的发送按键的方式。
; 后来发现用 PostMessage 可完美解决此问题,一般发送内容都不再依赖剪切板了。
; 但是大量的内容还是推荐用剪切板粘贴

; F1::SendP("测试", "ahk_class Notepad") ; 限定系统记事本时才能输出字符串

F1::SendP("dbgba")

; Send {text}在某些中文输入法打开状态下,发送英文会出错,SendP函数没问题
; Send {text}试过了,在某些情况下会无效,原因不明
SendP(Str) {
  ControlGetFocus, Control, A
  Loop Parse, Str
    PostMessage, 0x102, ord(A_LoopField), , %Control%, A
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。