以下是可正方向切换输入法代码(已经验证通过)Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Sub Command1_Click() keybd_event 17, 0, 0, 0 keybd_event 16, 0, 0, 0 keybd_event 17, 0, 2, 0 keybd_event 16, 0, 2, 0 End Sub按照键盘功能,只要敲击键盘右侧的Ctrl+Shift键就可以反方向切换输入法,我也找到右Ctrl+Shift键的代码是163、161,但代入以上代码中还是只能正方向切换。求教高手,还需加入什么代码才能实现反方向切换输入法。
Private Sub Command1_Click() keybd_event 17, 0, 0, 0 keybd_event 16, 0, 0, 0 keybd_event 17, 0, 2, 0 keybd_event 16, 0, 2, 0 End Sub按照键盘功能,只要敲击键盘右侧的Ctrl+Shift键就可以反方向切换输入法,我也找到右Ctrl+Shift键的代码是163、161,但代入以上代码中还是只能正方向切换。求教高手,还需加入什么代码才能实现反方向切换输入法。
Private Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long
Private Declare Function ImmGetDescription Lib "imm32.dll" Alias "ImmGetDescriptionA" (ByVal hkl As Long, ByVal lpsz As String, ByVal uBufLen As Long) As Long
Private Const IME_CONFIG_GENERAL = 1
Private Const KLF_REORDER = &H8
Private Const KLF_ACTIVATE = &H1Dim Layout(1 To 16) As Long
Dim ActIme As Long' 选择输入法
Private Sub Combo1_Click()
ActIme = Layout(Combo1.ListIndex + 1)
Text1.SetFocus
End Sub' 初始装入输入法信息
Private Sub Form_Load()
Dim AStr As String * 256
Dim BStr As String
Dim x As Long
Dim hMem As Long
Dim i As Long
x = GetKeyboardLayoutList(32, Layout(1))
Combo1.Clear
If x Then
For i = 1 To x
ImmGetDescription Layout(i), AStr, 256
If InStr(AStr, Chr(0)) = 1 Then
BStr = ""
Else
BStr = Left$(AStr, InStr(AStr, Chr(0)))
End If
If Trim(BStr) = "" Then
Combo1.AddItem "英语(美国) "
Else
Combo1.AddItem BStr
End If
Next i
End If
End Sub' 为文本框指定选中的输入法
Private Sub Text1_GotFocus()
If Combo1.ListCount > 0 Then
ActivateKeyboardLayout ActIme, 1
End If
End Sub