用VB在程序中添加切换中文输入法的功能
2005-01-17 15:12
1386 查看
思路:
先用GetKeyboardLayoutList 函数来取得所有输入法,然后逐个用ImmIsIME判断是否是中文输入法,如果是的话在用ImmGetDescription得到输入法的名称,最后选定你需要的输入法用ActivateKeyboardLayout激活它.
源码:
Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As Long, ByVal flags As Long) As Long
Public Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long
Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
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 hCurKBDLayout As Long
Public Sub loadsrfz()
Dim buff As String
buff = String(255, 0)
Dim NoOfKBDLayout As Long
Dim BuffLen As Long
Dim retstr As String
hCurKBDLayout = GetKeyboardLayout(0)′取得目前的输入法
NoOfKBDLayout = GetKeyboardLayoutList(25, hkb(0))
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)
If Left(retstr, Len("智能ABC")) = "智能ABC" Then
ActivateKeyboardLayout hkb(I - 1), 0
Exit Sub
End If
End If
Next
End Sub
先用GetKeyboardLayoutList 函数来取得所有输入法,然后逐个用ImmIsIME判断是否是中文输入法,如果是的话在用ImmGetDescription得到输入法的名称,最后选定你需要的输入法用ActivateKeyboardLayout激活它.
源码:
Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As Long, ByVal flags As Long) As Long
Public Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long
Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
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 hCurKBDLayout As Long
Public Sub loadsrfz()
Dim buff As String
buff = String(255, 0)
Dim NoOfKBDLayout As Long
Dim BuffLen As Long
Dim retstr As String
hCurKBDLayout = GetKeyboardLayout(0)′取得目前的输入法
NoOfKBDLayout = GetKeyboardLayoutList(25, hkb(0))
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)
If Left(retstr, Len("智能ABC")) = "智能ABC" Then
ActivateKeyboardLayout hkb(I - 1), 0
Exit Sub
End If
End If
Next
End Sub
相关文章推荐
- 程序切换中文输入法要按两次Ctrl+Space
- IOS8 ----模拟器键盘与MAC键盘切换及中文输入法键盘的添加
- Ubuntu在wps-office等qt5程序下不能切换中文fcitx输入法的问题
- VS2005 C# 程序切换 中文 输入法要按 两次Ctrl+Space
- CentOS 7 添加中文输入法
- 6.1为我们的web程序添加发送邮件的功能
- 在英文版Debian中添加中文拼音(双拼)输入法
- ubuntu10.04中安装openoffice3.2无法切换中文输入法的解决
- .NET WinForm程序,用中文输入法输入字符时,重复触发OnKeyPress消息问题
- Ubuntu14.04英文系统添加中文输入法
- 怎样给没有源代码的.net程序添加修改功能
- oracle 11g sqlplus下无法切换中文输入法
- cmd下dos窗口不能输入中文【无法切换输入法】的解决方案
- ubuntu12.04下wps无法输入中文,无法切换输入法问题
- 程序实现自动切换输入法
- dephi 程序输入法中英文自动切换实现的源代码
- 如何在程序中自动控制切换中英文输入法?
- centos 7 添加中文输入法
- 为什么添加/删除程序中的中文变成英文的了
- Ubuntu英文系统下中文输入法的添加