| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3216 人关注过本帖
标题:请问如何把当前输入法切换成英文?谢谢!
只看楼主 加入收藏
mansohu
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2013-3-20
结帖率:20.69%
收藏
 问题点数:0 回复次数:2 
请问如何把当前输入法切换成英文?谢谢!
请问如何把当前输入法切换成英文?谢谢!
搜索更多相关主题的帖子: 输入法 英文 如何 
2015-01-09 09:52
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
有两种方式可切换输入法
1,模拟按键切换,一般我们在输入时是按"Ctrl+空格"键切换的,因此,可用sendkeys "^ "模拟按键达到切换输入法的目的,但这种方法的缺点是不能明确指定,是否切换为中文起决于当前的输入法状态,如果当前是中文,发这个命令后就切换成英文了。
2,强制指定中英文输入法。这个要用api首先获取系统里所有输入法,然后根据输入法属性判断是英文还是中文,这样需要英文输入时可自动切换到英文,需要中文时自动切换到中文,代码量稍微大些。

新建一个项目,窗口里放一个text控件、两个command控件,拷贝下述代码运行可见到上述切换输入法的效果(均在VB6、XP下调试通过):

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 GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long

Private Sub Command1_Click()
  Dim i As Long, j As Long, hk(30) As Long
  '强行切换为中文,如有需要还可以指定哪一种中文输入如:五笔、搜狗、智能ABC等
  j = GetKeyboardLayoutList(30, hk(0))
  For i = 0 To j - 1
    If ImmIsIME(hk(i)) = 1 Then
      ActivateKeyboardLayout hk(i), 0   '强制切换为中文输入法
      Exit For
    End If
  Next
End Sub

Private Sub Command2_Click()
  Dim i As Long, j As Long, hk(30) As Long
  '强行切换为英文
  j = GetKeyboardLayoutList(30, hk(0))
  For i = 0 To j - 1
    If ImmIsIME(hk(i)) = 0 Then
      ActivateKeyboardLayout hk(i), 0   '强制切换为英文输入法
      Exit For
    End If
  Next
End Sub

Private Sub Text1_Click()
  '模拟按“Ctrl+空格”键,但不能明确指定中英文输入
  SendKeys "^ "
End Sub
2015-01-09 19:17
mansohu
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2013-3-20
收藏
得分:0 
以下是引用xzlxzlxzl在2015-1-9 19:17:11的发言:

有两种方式可切换输入法
1,模拟按键切换,一般我们在输入时是按"Ctrl+空格"键切换的,因此,可用sendkeys "^ "模拟按键达到切换输入法的目的,但这种方法的缺点是不能明确指定,是否切换为中文起决于当前的输入法状态,如果当前是中文,发这个命令后就切换成英文了。
2,强制指定中英文输入法。这个要用api首先获取系统里所有输入法,然后根据输入法属性判断是英文还是中文,这样需要英文输入时可自动切换到英文,需要中文时自动切换到中文,代码量稍微大些。

新建一个项目,窗口里放一个text控件、两个command控件,拷贝下述代码运行可见到上述切换输入法的效果(均在VB6、XP下调试通过):

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 GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long

Private Sub Command1_Click()
  Dim i As Long, j As Long, hk(30) As Long
  '强行切换为中文,如有需要还可以指定哪一种中文输入如:五笔、搜狗、智能ABC等
  j = GetKeyboardLayoutList(30, hk(0))
  For i = 0 To j - 1
    If ImmIsIME(hk(i)) = 1 Then
      ActivateKeyboardLayout hk(i), 0   '强制切换为中文输入法
      Exit For
    End If
  Next
End Sub

Private Sub Command2_Click()
  Dim i As Long, j As Long, hk(30) As Long
  '强行切换为英文
  j = GetKeyboardLayoutList(30, hk(0))
  For i = 0 To j - 1
    If ImmIsIME(hk(i)) = 0 Then
      ActivateKeyboardLayout hk(i), 0   '强制切换为英文输入法
      Exit For
    End If
  Next
End Sub

Private Sub Text1_Click()
  '模拟按“Ctrl+空格”键,但不能明确指定中英文输入
  SendKeys "^ "
End Sub


我的系统里的默认输入法是 《微软拼音简捷》(而不是英文法输入法),用 ImmIsIME 检测的结果:它也是中文输入法(和其它输入法类似,它也要用“Shift”切换中英文)。请问如果我不了解各种输入法的快捷键使用,我应该如何用代码直接切换到默认输入法中的“英文输入”呢?谢谢!
2015-02-16 17:20
快速回复:请问如何把当前输入法切换成英文?谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024618 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved