在Win10下使用AutoHotKey为软件指定默认输入法

引子

最近使用MathType较为频繁,然MathType每次打开都是系统默认的中文输入法,导致打公式时必须先切换成英文输入法才好使用,由此萌生了为其指定默认输入法的想法。

经验借鉴

通过在搜索引擎上检索后,我找到:根据不同的程序窗口设置输入法,这位作者的代码是AutoHotKey软件的脚本代码。
然该作者在代码中检测窗口的部分使用到了 窗口类名 这一参数,故我还需要找到获取 窗口类名 的方法。最终选择使用autohotkey自带的窗口检测程序获取窗口类名。

动手环节

1、获取窗口类名

在autohotkey的安装目录下有一个名为"ActiveWindowInfo.ahk"程序可以自动获取窗口的类名:
运行之后在这里可以看到窗口类名:
在这里插入图片描述

2、AutoHotKey脚本的实现

参考根据不同的程序窗口设置输入法,安装好AutoHotKey后,将以下代码复制到一个.ahk文件中,之后用AutoHotKey打开即可。需要注意的是,代码前半部分是必需的,而且需要放到ahk文件最开始,否则脚本不能触发。

#Persistent  
Gui +LastFound  
hWnd := WinExist()  
DllCall( "RegisterShellHookWindow", UInt,hWnd )  
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )  
OnMessage( MsgNum, "ShellMessage")  
Return  
; 注意!!!!!上面的代码是必需的,而且需要放到ahk文件最开始

; 下面的代码放到文件哪里都可以
ShellMessage( wParam,lParam ) {  
  If ( wParam = 1 )   
  {  
    WinGetclass, WinClass, ahk_id %lParam%  
    If Winclass in EQNWINCLASS        ;EQNWINCLASS是需要开启中文输入的窗口类名(即MathType的窗口类名),可以有多个程序,之间用‘,’隔开  
    {   
      winget,WinID,id,ahk_class %WinClass%  
      SetLayout("00000409",WinID)     ;00000409是英语美式键盘的输入法代码,00000804是中文美式键盘的输入法代码,系统内安装的输入法代码可以在注册表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Keyboard Layouts查到  
    }  
}  
}  

SetLayout(Layout,WinID){  
DllCall("SendMessage", "UInt", WinID, "UInt", "80", "UInt", "1", "UInt", (DllCall("LoadKeyboardLayout", "Str", Layout, "UInt", "257")))  
}  

尾声

这次的探索让我发现了AutoHotKey这个神器,该软件的用途还有很多,以后有时间可以深入的学学。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值