在程序中添加输入法和输入法选择.'在FORM中加一个LIST1控件. '在FORM_LOAD 中调用 AddInputKey函数. '在LIST1_CLICK中调用 SelectClick 函数.'================================================= Public Declare Function ImmGetDescription Lib "imm32.dll" Alias "ImmGetDescriptionA" (ByVal HKL As Long, ByVal lpsz As String, ByVal uBufLen As Long) As Long Public Declare Function ImmIsIME Lib "imm32.dll" (ByVal HKL As Long) As Long Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long Public Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As LongPublic Const KLF = &H8 Public Res As Integer Public NoOfKBDLayout As Long, i As Long, j As Long Public hKB(24) As Long, BuffLen As Long Public Buff As String Public RetStr As String Public RetCount As Long Public Kln As String Public hcurKBDLayOut As String Public Sub SelectClick() On Error Resume Next If List1.ListIndex = -1 Then Exit Sub Kln = String(8, 0) ActivateKeyboardLayout hKB(List1.ListIndex), 0 Res = GetKeyboardLayoutName(Kln) Res = LoadKeyboardLayout(KLF, Kln) End SubPublic Sub AddInputKey() Buff = String(255, 0) hcurKBDLayOut = GetKeyboardLayout(0) NoOfKBDLayout = GetKeyboardLayoutList(25, hKB(0)) ReDim layoutlist(NoOfKBDLayout) As String For i = 1 To NoOfKBDLayout If ImmIsIME(hKB(i - 1)) = 1 Then BuffLen = 255 RetCount = ImmGetDescription(hKB(i - 1), Buff, BuffLen) RetStr = Left(Buff, RetCount) List1.AddItem RetStr Else RetStr = "English (American)" List1.AddItem RetStr End If Next ActivateKeyboardLayout hcurKBDLayOut, 0 End Sub
txt1.IMEMode = 1 打开中文输入法
txt1.IMEMode = 2 打开英文输入法
在程序中添加输入法和输入法选择.'在FORM中加一个LIST1控件.
'在FORM_LOAD 中调用 AddInputKey函数.
'在LIST1_CLICK中调用 SelectClick 函数.'=================================================
Public Declare Function ImmGetDescription Lib "imm32.dll" Alias "ImmGetDescriptionA" (ByVal HKL As Long, ByVal lpsz As String, ByVal uBufLen As Long) As Long
Public Declare Function ImmIsIME Lib "imm32.dll" (ByVal HKL As Long) As Long
Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
Public Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long
Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As LongPublic Const KLF = &H8
Public Res As Integer
Public NoOfKBDLayout As Long, i As Long, j As Long
Public hKB(24) As Long, BuffLen As Long
Public Buff As String
Public RetStr As String
Public RetCount As Long
Public Kln As String
Public hcurKBDLayOut As String
Public Sub SelectClick()
On Error Resume Next
If List1.ListIndex = -1 Then Exit Sub
Kln = String(8, 0)
ActivateKeyboardLayout hKB(List1.ListIndex), 0
Res = GetKeyboardLayoutName(Kln)
Res = LoadKeyboardLayout(KLF, Kln)
End SubPublic Sub AddInputKey()
Buff = String(255, 0)
hcurKBDLayOut = GetKeyboardLayout(0)
NoOfKBDLayout = GetKeyboardLayoutList(25, hKB(0))
ReDim layoutlist(NoOfKBDLayout) As String
For i = 1 To NoOfKBDLayout
If ImmIsIME(hKB(i - 1)) = 1 Then
BuffLen = 255
RetCount = ImmGetDescription(hKB(i - 1), Buff, BuffLen)
RetStr = Left(Buff, RetCount)
List1.AddItem RetStr
Else
RetStr = "English (American)"
List1.AddItem RetStr
End If
Next
ActivateKeyboardLayout hcurKBDLayOut, 0
End Sub
text1.IMEMode = 0 表示无
txt1.IMEMode = 1 打开中文输入法
txt1.IMEMode = 2 打开英文输入法
就可以了吧!