|
change Ctrl-Shift 出现输入法的顺序
loadKeyboardLayout()可以改变order,只要第一个叁数传
您要使之变成Top的KeyboardlayoutName,第二个叁数传KLF_REORDER
便可,例如底下的例子便是
aa = LoadKeyboardLayout("e0060404", KLF_REORDER) '使大易 变top
aa = LoadKeyboardLayout("00000409", KLF_REORDER) '使英文变top
aa = LoadKeyboardLayout("e0010404", KLF_REORDER) '使注音变top
如此,使顺序变成
注音
英文
大易
而如何得知每个输入法的keyboardlayName呢? 则使用
GetKeyboardLayoutname()它会传回Current KeyBoardLayoutName
配合GetKeyboardLayoutList 取得所有install的KeyBoard Handle
再用activateKeyboardlayout()来设定目前的keyboardLayout如下:
Private Declare Function GetKeyboardLayoutList Lib "user32" Alias _
"GetKeyboardLayoutList" (ByVal nBuff As Long, lpList As Long) As Long
Private Declare Function GetKeyboardLayoutName Lib "user32" Alias _
"GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Declare Function ActivateKeyboardLayout Lib "user32" Alias _
"ActivateKeyboardLayout" (ByVal HKL As Long, ByVal flags As Long) As Long
Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" _
(ByVal pwszKLID As String, ByVal flags As Long) As Long
Const KLF_REORDER = &H8
Private Form_Load()
Dim hkb5(24) as Long, i as Long
Dim kln As String
Dim BuffLen As Long
Dim Buff As String
Dim RetStr As String
Dim RetCount As Long
Buff = String(255, 0)
BuffLen = 255
kln = String(8, 0)
LayOutNO = GetKeyboardLayoutList(25, hkb5(0))
For i = 0 To LayOutNO - 1
ActivateKeyboardLayout hkb5(i), 0
res = GetKeyboardLayoutName(kln)
RetCount = ImmGetDescription(hKB5(i - 1), Buff, BuffLen)
RetStr = Left(Buff, RetCount)
Debug.Print RetStr, kln '列印各种输入法,及其输入法名称代号
Next i
End Sub |
|