假如我做了一个窗体,内有若干textbox 我想光标移动到textbox3时,自动打开五笔字型输入法,而系统默认的是搜狗拼音输入法,因为别人还要用这台电脑不能把默认输入法设置成五笔。
这是一段VB中的代码,经测试可以实现楼主要的功能:
'Download by http://www.codefans.net Option
Explicit
Private
Declare
Function GetKeyboardLayoutList Lib "user32" (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 GetKeyboardLayout Lib "user32" (ByVal dwLayout 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
Declare
Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As
Long, ByVal _ flags As
Long) As
Long Const IME_CONFIG_GENERAL = 1 Const KLF_REORDER = &H8 Const KLF_ACTIVATE = &H1
Dim la(1 To 16) As
Long Dim ActIme As
Long
Private
Sub Combo1_Click() ActIme = la(Combo1.ListIndex + 1) Text1.SetFocus End
Sub
Private
Sub Form_Load() Dim astr As
String * 256 Dim bstr As
String Dim x, hMem, i As
Long x = GetKeyboardLayoutList(32, la(1)) Combo1.Clear If x Then For i = 1 To x ImmGetDescription la(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
|