用VB读取和控制Windows的中文输入法

2016-02-19 15:46 60 1 收藏

今天图老师小编给大家展示的是用VB读取和控制Windows的中文输入法,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

【 tulaoshi.com - 编程语言 】

  在Windows中我们可以用Ctrl+Shift键来调入或切换中文输入法,但是这样做每次都是使位于输入法列表顶端的那个输入法首先被调用。通常我们都要连续按好几次Ctrl+Shift才能将习惯的输入法调出。我编制了一段小程序,通过它可以把任意一个输入法放在输入法列表的顶端。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  它的原理是:使用LoadKeyboardLayout函数可以改变输入法的顺序,只要在第一个参数中传递目标输入法的KeyboardlayoutName,第二个参数用KLF_REORDER就可以了。

  例如,aa = LoadKeyboardLayout(″00000409″, KLF_REORDER) 使英文变成第一。那怎样获得KeyboardlayoutName呢?因为使用GetKeyboardLayoutname可以返回当前输入法的KeyboardlayoutName,所以我们可以先用GetKeyboardLayoutList 函数来取得所有输入法,再用activateKeyboardlayout()函数设置当前输入法,最后就可以得到它的KeyboardlayoutName了。具体步骤如下:

  打开VB后选择标准的EXE文档,在Form1上添加一个Combobox和一个command控件,输入以下程序。

  ′以下的API函数用于输入法操作

  

  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  Private Declare Function GetKeyboardLayoutName Lib ″user32″ Alias _  ″GetKeyboardLayoutNameA″ (ByVal pwszKLID As String) As Long  Private Declare Function LoadKeyboardLayout Lib ″user32″ Alias ″LoadKeyboardLayoutA″ _  (ByVal pwszKLID As String, ByVal flags As Long) As Long  Const KLF_REORDER = &H8  Private NoOfKBDLayout As Long, i As Long, j As Long  Private hKB(24) As Long, BuffLen As Long  Private Buff As String  Private RetStr As String  Private RetCount As Long  Private kln As String  Private Sub Command1_Click()  If Combo1.ListIndex = -1 Then′如果用户尚未选择输入法,显示出错信息  MsgBox ″请先选择一个输入法″  Exit Sub  End If  ′改变输入法顺序  kln = String(8, 0)  ActivateKeyboardLayout hKB(Combo1.ListIndex), 0  res = GetKeyboardLayoutName(kln)  res = LoadKeyboardLayout(kln, KLF_REORDER)  ActivateKeyboardLayout hCurKBDLayout, 0  End Sub  Private Sub Form_Load()  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)  Combo1.AddItem RetStr  Else  RetStr = ″English (American)″ ′英文输入法  Combo1.AddItem RetStr  End If  Next  ActivateKeyboardLayout hCurKBDLayout, 0 ′恢复原来的输入法  End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  运行后,在combobox中选择目标输入法,按下command即可。。

来源:http://www.tulaoshi.com/n/20160219/1610346.html

延伸阅读
标签: 电脑入门
适用范围: Win8 操作步骤: 在控制面板时钟、区域和语言语言下面点击添加语言: 在拼音Y中找到英语(英文系统可直接查找英文语言首字母),双击打开: 在打开的窗口中选择具体的语言区域,如本文的英语(美国),完成添加: 回到语言设置界面,单击选中中文(中华人民共和国)后点击下移: 此时可以发现删除按钮处于激活状态,点击...
标签: Web开发
但唯一遗憾的是,在对中文输入法打开时,firefox3.0中是对中文拼音的自动匹配,而对输入后的中文无法及时触发匹配;而在我的IE6.0下,则无此问题。 原因分析: Autocomplete插件对用户输入字符的触发自动匹配是通过”keydown”事件进行的(可分析jquery.autocomplete.js第 92行),在IE6中,当输入法打开时,输入的字符是不会触发”keydown”...
标签: 电脑入门
我们在与朋友聊天的时候,经常会使用一些符号表情,颜文字表情就是其中的一种。在MAC OS X Lion 自带的中文输入法里也包含了颜文字表情输入功能,具体该怎么启用这项功能呢?现在图老师小编就告诉你操作的技巧。 打开方法: 方法一: 同时按下shift+6 两个键即可调出颜文字表情列表,点击即可插入。 方法二: 如果你实在记不住这个快...
可以修改 .bashrc 和 .bash_profile export LANG=zh_CN.GBK export XMODIFIERS="@im=fcitx" export XIM=fcitx export XIM_PROGRAM=fcitx
标签: 软件教程
刚刚使用必应输入法的可能对这款输入法还有很多不会使用的,比如输入法的字体大小怎么设置、皮肤怎么更换,如果你有些音不准备,还需要设置模糊音这样能方便你打字,那这些内容都在哪里设置呢?小编给大家分享下必应输入法怎么设置,主要跟大家分享必应输入法怎么设置字体、皮肤、模糊音等等。 如何设置候选词字...

经验教程

378

收藏

96
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部