|
Check其他的window是否有开启IME,前题是已取得该window的hwnd
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function ImmIsIME Lib "imm32.dll" (ByVal hkl As Long) As Long
Private Declare Function GetKeyboardLayout Lib "user32" _
(ByVal dwLayout As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" _
(ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private hwnd5 As Long
Private Sub Command1_Click()
Dim hthr As Long
Dim pid As Long, hkb5 As Long
hthr = GetWindowThreadProcessId(hwnd5, pid) '取得hwnd5所在的threadId
hkb5 = GetKeyboardLayout(hthr) '取得该threadId的keyboardLayout
If ImmIsIME(hkb5) = 1 Then
Debug.Print "IME is Open"
Else
Debug.Print "Ime is Close"
End If
End Sub
Private Sub Form_Load()
Me.Show
Shell "c:\windows\notepad.exe", vbNormalFocus
hwnd5 = GetForegroundWindow()
End Sub |
|