程序中怎么改变textbox文本框输入法?
解决方案 »
- 只向前游标与可以前后移动的游标有何区别呀,在使用中本质不同是什么,谁能给个例子?
- VB怎么来设置指定网卡的地址为自动获得
- 求助:这个ucFolderView控件从工程的部件哪里拉出来的啊???
- 请问如何在listview的一行里面添加多个图标
- 救命啊 WINSOCK问题 为什么不允许多个用户同时登陆 运行时间一长就报360错误
- 十进制的数值:3448602362,如何才能把它转换成十六进制的字符串:CD8D7EFA?
- 求助!! 错误 '800a000d'类型不匹配: '[string: ""]' /co2/system/cdepb ?
- 在VB中如何声明?
- 菜鸟求救--vb读取excel数据,并按照想要的格式打印--最后编译成exe 我菜的不行 所以最好有代码~~
- 两个应用程序之间数据通信问题,你能帮我吗?
- 我的第一个问题
- text查找与删除的问题1
输入法的名称可以通过ImmGetDescription获取
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 Declare Function ImmIsIME Lib "imm32.dll" (ByVal hkl As Long) As Long
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As Long, ByVal flags As Long) As Long
Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Const KLF_REORDER = &H8
Dim i&, IMEcounts&, Buff$, RetStr$, hKB&(24) 'IMEstr$()Private Sub Form_Load()
Buff = String(255, 0)
IMEcounts = GetKeyboardLayoutList(25, hKB(0)) '取得所有输入法
For i = 1 To IMEcounts
'ReDim Preserve IMEstr(i)
If ImmIsIME(hKB(i - 1)) = 1 Then '中文输入法
Call ImmGetDescription(hKB(i - 1), Buff, 255)
RetStr = Mid(Buff, 1, InStr(Buff, Chr(0)) - 1)
Else
RetStr = "English (American)" '英文输入法
End If
'IMEstr(i) = RetStr
Combo1.AddItem RetStr
Next i
Call ActivateKeyboardLayout(hKB(0), KLF_REORDER)
End SubPrivate Sub Combo1_Click()
Call ActivateKeyboardLayout(hKB(Combo1.ListIndex), KLF_REORDER)
End Sub'Private Sub Text1_GotFocus()
' Call ActivateKeyboardLayout(hKB(0), KLF_REORDER)
'End Sub'Private Sub Text2_GotFocus()
' Call ActivateKeyboardLayout(hKB(3), KLF_REORDER)
'End Sub