Loopback
|
Posted: Mon Sep 26, 2022 19:31 Post subject: |
|
|
sa wrote: | Нет, языка в системе. |
Язык-то всё равно меняется на уровне приложения.
С помощью вспомогательного скрипта можно сделать. В конфиге Autorun переопределить Ctrl+D:
Code: |
SetHotkeyAction /K:C /H:D SetLangAndOpen
Func SetLangAndOpen()
ShellExec /WAIT "<path_to_Autoit>\AutoIt3.exe" "<path_to_Script>\setlang.au3"
SendCommand "cm_DirectoryHotlist"
EndFunc
|
Скрипт (переключает на английский, для русского строка "0419"):
Code: |
_TCHSetKeyboardLayout("0409", __TCHGetActiveInstance())
Func _TCHSetKeyboardLayout($sLayoutID, $hWnd)
Local $WM_INPUTLANGCHANGEREQUEST = 0x50
Local $ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", $sLayoutID, "int", 0)
DllCall("user32.dll", "int", "SendMessage", "hwnd", $hWnd, _
"int", $WM_INPUTLANGCHANGEREQUEST, _
"int", 1, _
"int", $ret[0])
EndFunc
Func __TCHGetActiveInstance()
Local $sInst = EnvGet("COMMANDER_HWND") ; if set by Autorun, preferable
If ($sInst <> "") And StringIsDigit($sInst) Then Return Hwnd($sInst)
; Fallback to "active" window method
Local $aList = WinList("[CLASS:TTOTAL_CMD]")
For $i = 1 To $aList[0][0]
If WinActive($aList[$i][1]) Then Return $aList[$i][1]
Next
Return 0
EndFunc
|
|
|