如何得知当前打开的输入法是什么

lj77916 2004-12-27 05:48:54
怎样才能知道当前打开的输入法是某个输入法
...全文
79 点赞 收藏 5
写回复
5 条回复
northwolves 2004年12月28日
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 Sub Form_Load()
MsgBox getlayout, vbInformation, "当前输入法"
End Sub

Function getlayout() As String
Dim buff As Long
getlayout = "英文输入法"
buff = GetKeyboardLayout(0) '取得目前的输入法
If ImmIsIME(buff) = 1 Then '中文输入法
getlayout = Space(255)
ImmGetDescription buff, getlayout, Len(getlayout)
End If
End Function

回复 点赞
igis 2004年12月28日
Function getlayout() As String
Dim buff As Long
getlayout = "英文输入法"
buff = GetKeyboardLayout(0) '取得目前的输入法


Do While ImmIsIME(buff) <> 1
ActivateKeyboardLayout 1, 1
Loop

End Function
这样一段代码,表示,如果不是英文输入法,则将其切换英文输入法,可是为什么上面那是一个死循环呢??
回复 点赞
igis 2004年12月28日
ImmIsIME(buff) = 1 返回值为1时,表示当前输入为中文对吗?如果是,返回值不为1那表示当前输入法为英文??
回复 点赞
warlord 2004年12月28日
没的说了,楼上正解.
回复 点赞
igis 2004年12月28日
楼主自己不关心??
回复 点赞
发动态
发帖子
VB基础类
创建于2007-09-28

2744

社区成员

19.7w+

社区内容

VB 基础类
社区公告
暂无公告