兄弟姐妹
怎样实现程序在windows下切换输入法?
怎样实现程序在windows下切换输入法?
解决方案 »
- 如何实现以前dos版本wps的文字编辑界面功能
- 讨论下VB VS Delphi
- 用vb在高档次机器上开发的软件,如何保证能在低档次的机器上运行。
- 字符串截取问题讨论
- 如何将DLL转换成工程的内部函数?
- 继续散分
- 项目组经理给的题目,大家帮我啊。急!!!!!!!!!1
- 添加数据窗体的问题
- 小弟跪求各位大哥的帮助,用VB编写高校排考软件。先谢过了!
- 超急!什么是FTP服务器,它有什么特性,要使一台DOS系统的机变成FTP服务器要装什么软件?(注:DOS机的HARD DISK很小只有32M)
- 请教关于datagrid 中的否列的显示格式设定,请进》》》
- 求助:OCX连接数据库,我把相同的代码放到EXE中,拷到其他机器上,可以连接,在OCX中却不行,为什么?
在FORM_LOAD 事件中
CALL LoadInput(me)
'------------------------------
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 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 Long
Public Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long
Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As LongPublic Const KLF = &H8
Public Res As Integer
Public NoOfKBDLayout As Long, i As Long, j As Long
Public hKB(24) As Long, BuffLen As Long
Public Buff As String
Public RetStr As String
Public RetCount As Long
Public Kln As String
Public hcurKBDLayOut As StringPublic Sub SelectClick(MyForm As Form)
On Error Resume Next
If MyForm.List1.ListIndex = -1 Then Exit Sub
Kln = String(8, 0)
ActivateKeyboardLayout hKB(MyForm.List1.ListIndex), 0
Res = GetKeyboardLayoutName(Kln)
Res = LoadKeyboardLayout(KLF, Kln)
End Sub
'---------------------------------------------------------
Public Sub LoadInput(MyForm As Form)
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)
MyForm.List1.AddItem RetStr
Else
RetStr = "English (American)"
MyForm.List1.AddItem RetStr
End If
Next
ActivateKeyboardLayout hcurKBDLayOut, 0
End Sub