不同窗口自动设置输入法

实现不同窗口设置不同的输入法

;~shellhook=>wm_create=>getkeyboardlayout=>ImmSimulateHotKey 根据不同的程序窗口设置输入法,如键盘默认布局为英语(美国),运行脚本后,当开启Maxthon2,记事本,word,excel时,会设置输入法为QQ拼音。
;~ 我很不爽把输入法默认设为英文每次都要在文字输入时开启中文,或者把输入法默认设为中文后在某些程序和游戏中又要关闭一次。在本论坛和官网窜访了几次后做了这个脚本,一劳永逸了。
#Persistent
Gui +LastFound
hWnd := WinExist()
DllCall( "RegisterShellHookWindow", UInt,hWnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage")
Return
ShellMessage( wParam,lParam ) {
  If ( wParam = 1 ) 
  {
    WinGetclass, WinClass, ahk_id %lParam%
    If Winclass in Notepad,OpusApp,XLMAIN,EVERYTHING,StandardFrame,UIWindowClassName.loach ,Container,TheWorld_Frame,IEFrame ;需要开启中文输入的窗口类名
    { 
      winget,WinID,id,ahk_class %WinClass%
      SetLayout("E0200804",WinID)         ;E02b所 804是谷歌拼音代码,系统内安装的输入法代码可以在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts查到
    }
;~      If Winclass in Container,TheWorld_Frame,IEFrame       ;需要开启中文输入的窗口类名
;~     { 
;~       winget,WinID,id,ahk_class %WinClass%
;~       SetLayout("E0270804",WinID)         ;E0270804是拼音++代码,系统内安装的输入法代码可以在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts查到
;~     }
   If Winclass in Progman        ;需要关闭中文输入的窗口类名
    { 
      winget,WinID,id,ahk_class %WinClass%
      SetLayout("00000804",WinID)         ;00000804是english代码,系统内安装的输入法代码可以在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts查到
    }
    If Winclass in SciTEWindow  ;需要中文输入法英文状态的,窗口类名
    { 
      winget,WinID,id,ahk_class %WinClass%
      SetLayout("E0200804",WinID)
      Send,{Shift}
    }
    
    
}
}
SetLayout(Layout,WinID){
DllCall("SendMessage", "UInt", WinID, "UInt", "80", "UInt", "1", "UInt", (DllCall("LoadKeyboardLayout", "Str", Layout, "UInt", "257")))
}

;~ HKL:=0x00000804
;~ HKL:=e0240804
;~ ControlGetFocus,ctl,A
;~ #4:: SendMessage,0x50,0,HKL,%ctl%,A

#Z::
Edit


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值