不用键盘,点击button或图片实现中英文切换和输入汉字的功能
用sendkeys "{CTRL}" & "{SPACE}"实现中英文切换,有时好用有时不好用,
是否有别的方法实现?还要能够输入中文,谢谢
用sendkeys "{CTRL}" & "{SPACE}"实现中英文切换,有时好用有时不好用,
是否有别的方法实现?还要能够输入中文,谢谢
解决方案 »
- 如何调用MSHFlexGrid记录集
- 求一个access库sql语句
- 一个很简单的问题
- 超急用,存储过程批处理问题。
- <在线等...>删除数据库内二进制存储文件的问题?
- 请问几个VB的简单问题!
- 不知道各位是否碰到这样的问题:我用Vb写IIS应用程序,在没保存时调试是正常运行的,可保存到文件后,调试运行就出错!如下:
- 和大家辞别!!同时送分!!!
- 在vb中退过ado操作ms access数据库中,请问在打开数据源写sql语句时用哪个sql函数将字符型转为数字型
- 请问哪里可以下载象delphi中的splitter OCX控件!我知道.net中有。
- DrawText函数 竖向自动换行打印的问题!
- EXCEL问题,急,分不多,但发贴的人解贴神速,!!!!!!
Public Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long
Public Declare Function ImmIsIME Lib "imm32.dll" (ByVal HKL 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 ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As LongConst 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 StringPrivate Sub Command1_Click()
If Combo1.ListIndex = -1 Then
'如果用户尚未选择输入法,显示出错信息。
MsgBox "请选择一个输入法"
Exit Sub
End If
'改变输入法顺序。
kln = String(8, 0)
ActivateKeyboardLayout hKB(Combo1.ListIndex), 0
'LoadKeyboardLayout可以改变输入法顺序,第一个参数为输入法名称。
'GetKeyboardLayoutName可以获得输入法名称。
'ActivateKeyboardLayout设置当前输入法。
res = GetKeyboardLayoutName(kln)
curkeylayout = LoadKeyboardLayout(kln, KLF_REORDER)
ActivateKeyboardLayout curkeylayout, 0
End SubPrivate Sub Form_Load()
Buff = String(255, 0)
'取得目前得输入法。
curkeylayout = 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)
Combo1.AddItem RetStr
Else
RetStr = "english(american)" '英文输入法
Combo1.AddItem RetStr
End If
Next
'回复原来得输入法。
ActivateKeyboardLayout curkeylayout, 0
End Sub