Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Autorun 
Author Message
Loopback



PostPosted: Mon Sep 26, 2022 19:31    Post subject: Reply with quote

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
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group