这个在网上应该都能搜索到,我也没有做过。以下代码供参考 Option Explicit '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
|