怎样用VB实现反方向切换输入法?
以下是可正方向切换输入法代码(已经验证通过)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,但代入以上代码中还是只能正方向切换。
求教高手,还需加入什么代码才能实现反方向切换输入法。
--------------------编程问答-------------------- 向你这样操作时不能够实现这个功能的,你要获取所有输入法的列表,然后通过API函数来获取你想要的输入法,将其设置为当前输入法。
Option Explicit
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As Long, ByVal Flags As Long) As Long
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 = &H1
Dim 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
补充:VB , 控件