
第一个目标:仅使用Xiaolanghao输入法(默认为英语),因为:
第二个目标:英语+小浪豪输入法,需要AutoHotkey才能获取当前的英语键盘或小浪豪,以便可以在不同的输入法状态下使用不同的鼠标形状

我还使用了imetool.exe小工具,该工具从win7开始就使用。
英语有美式键盘和英式键盘,

但是美国键盘属于中文系统,而AutoHotkey不能区分是小朗豪输入法还是美国键盘输入法。
所以我不得不使用英文键盘。令人不安的是,当我使用Xiaolanghao时,任务栏图标将具有多个CH图标(该图标已被脚本删除,原因是win7中的强迫症,但现在我只能忍受它了)

在英语中,它是一个EN图标。
删除英文输入法后,只剩下小狼hao,就会有两个小狼hao(BUG,影响Win-Space无脑切换)

如何实施:
相关代码:
;切换输入法 changeIME(sID) { WinActive("A") ctl := ControlGetFocus() || WinGetID() PostMessage(0x50,, dllcall("LoadKeyboardLayout", "str",sID, "uint",1), ctl, "A") ;NOTE 美国英语要用"08040804" 若不放ctl 在TC帮助的查找窗口无法切换 } ;在用的所有输入法sID(8位16进制字符串) ;TODO 小狼毫 ****0804,而不是 E** arrUsingSid() { cnt := dllcall("GetKeyboardLayoutList", "uint",0, "uint",0) VarSetCapacity(hkl, cnt*4, 0) dllcall("GetKeyboardLayoutList", "uint",cnt, "uint",&hkl) arr := [] loop(cnt) { sID := format("{:08X}", numget(hkl,(A_Index-1)*4)) ;sID := (sID = "08040804") ? "00000804" : sID arr.push(sID) } return arr ;方法2 见 HKEY_CURRENT_USER\Keyboard Layout\Preload } ;TODO rime和极点无效,微软拼音可以 ;某日本人脚本中的获取输入法中英文状态(英文0,中文1) getState(winTitle:="A") { if !(idWIn := WinExist(winTitle)) return DefaultIMEWnd := dllcall("imm32\ImmGetDefaultIMEWnd", "uint",idWin, "uint") DetectSave := A_DetectHiddenWindows DetectHiddenWindows true res := SendMessage(WM_IME_CONTROL:=0x283, IMC_GETOPENSTATUS:=5,,, "ahk_id " . DefaultIMEWnd) DetectHiddenWindows DetectSave return res }
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-327615-1.html
才是最明智者
实力提升才是最关键的
现在不容易的事情就是炫富了