ChangeIME -轉換輸入法
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 Function ChangeIME(ByVal Keyword As String) As Boolean
Dim IMEList() As Long
Dim ret As Long
Dim n As Integer
Dim i As Integer
Dim StrName As String
ChangeIME = False
n = GetKeyboardLayoutList(0, 0)
ReDim IMEList(n - 1) As Long
GetKeyboardLayoutList n, IMEList(0)
For i = 0 To n - 1
If ImmIsIME(IMEList(i)) <> 0 Then
StrName = String(255, 0)
ret = ImmGetDescription(IMEList(i), StrName, 255)
StrName = Left(StrName, ret)
If InStr(StrName, Keyword) <> 0 Then
ActivateKeyboardLayout IMEList(i), 0
ChangeIME = True
Exit For
End If
End If
Next i
End Function
使用範例:準備二個Command Button,貼上程式碼
Private Sub Command1_Click()
ChangeIME "倉頡" '改變輸入法為倉頡
End Sub
Private Sub Command2_Click()
ChangeIME "速成" '改變輸入法為速成
End Sub