用VB在程序中添加切换中文输入法的功能

 思路:
        先用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


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值