; $sLayout для WinAPI_SetKeyboardLayout Global $Rus = '00000419' Global $Eng = '00000409' $hWnd = "" ; PID процесса, т.е Run("notepad.exe") $hWnd = WinWait("[CLASS:Notepad]", "", 10) $pkbrd = _WinAPI_GetKeyboardLayout($hWnd) If $pkbrd = $Rus Then _WinAPI_SetKeyboardLayout($Eng, $hWnd) EndIf ; #FUNC# Func _WinAPI_GetKeyboardLayout($hWnd) Local $Ret = DllCall('user32.dll', 'long', 'GetWindowThreadProcessId', 'hwnd', $hWnd, 'ptr', 0) If (@error) Or ($Ret[0] = 0) Then Return SetError(1, 0, 0) EndIf $Ret = DllCall('user32.dll', 'long', 'GetKeyboardLayout', 'long', $Ret[0]) If (@error) Or ($Ret[0] = 0) Then Return SetError(1, 0, 0) EndIf Return '0000' & Hex($Ret[0], 4) EndFunc ;==>_WinAPI_GetKeyboardLayout Func _WinAPI_SetKeyboardLayout($sLayout, $hWnd) If Not WinExists($hWnd) Then Return SetError(1, 0, 0) EndIf Local $Ret = DllCall('user32.dll', 'long', 'LoadKeyboardLayout', 'str', StringFormat('%08s', StringStripWS($sLayout, 8)), 'int', 0) If (@error) Or ($Ret[0] = 0) Then Return SetError(1, 0, 0) EndIf DllCall('user32.dll', 'ptr', 'SendMessage', 'hwnd', $hWnd, 'int', 0x0050, 'int', 1, 'int', $Ret[0]) Return SetError(0, 0, 1) EndFunc ;==>_WinAPI_SetKeyboardLayout |