Добавлено: Пн сен 26, 2022 15:47
Она, похоже, уже раньше когда-то назревала, поскольку есть в моем списке с приоритетом "подумать когда-нибудь"yozhik писал(а):Назрела хотелка.
Она, похоже, уже раньше когда-то назревала, поскольку есть в моем списке с приоритетом "подумать когда-нибудь"yozhik писал(а):Назрела хотелка.
А можно как-нибудь навесить установку языка (русского или английского), например, после Ctrl+D - для удобства перехода по горячим клавишам в меню избранных каталогов?yozhik писал(а):на функциональные кнопки (клавиши) теперь можно навесить много всего полезного
Речь про установку языка в TC, если я правильно понял. Ну, при поверхностном взгляде мне кажется можно при помощи новых SetHotkeyAction и SetMessageAction в субплагине Tweaks. На некий хоткей повесить перезапись в wincmd.ini значения ключа LanguageIni и отправку TC команды перечитать wincmd.ini. Но это теоретичсссски, надо разбираться, я пока туда не лез. А в моей фразе «функциональные кнопки (клавиши)» ключевое слово всё же «кнопки», а «клавиши» только постольку, поскольку на них отображается F3/F4/F5 и т.д.sa писал(а):навесить установку языка
Нет, языка в системе. Если установлен русский язык, а символы перехода по пунктам меню на английском, то приходится менять язык.yozhik писал(а):Речь про установку языка в TC
Язык-то всё равно меняется на уровне приложения.sa писал(а):Нет, языка в системе.
Код: Выделить всё
SetHotkeyAction /K:C /H:D SetLangAndOpen
Func SetLangAndOpen()
ShellExec /WAIT "<path_to_Autoit>\AutoIt3.exe" "<path_to_Script>\setlang.au3"
SendCommand "cm_DirectoryHotlist"
EndFunc
Код: Выделить всё
_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
Понятно, просто у yozhik речь велась про ключ LanguageIni (отвечающий за используемый языковой файл), который мне не нужно менять.Loopback писал(а):Язык-то всё равно меняется на уровне приложения.
Спасибо, сработало!Loopback писал(а):С помощью вспомогательного скрипта можно сделать.
Теперь отрабатывает без ошибки.Loopback писал(а): - функции реестра не работали с именами параметров, содержащими ""
Код: Выделить всё
IniRead CRNTLNG "%COMMANDER_INI%" "Configuration" "LanguageIni"
LngRead TREEBTN 5002 "%COMMANDER_PATH%\LANGUAGE\%CRNTLNG%"
If %AUTORUN_TCARCH% = 32 Then
AddDialog /W:105 /CENTER:1 "TCheckComboBox"
AddCondition /TEXT "TButton" 1 "%TREEBTN%"
AddControl /X:106 "TButton" 1
AddControl /X:106 "TButton" 2
AddControl /X:106 "TButton" 3
AddControl /W:109 "TMyComboBox" 1
Else
AddDialog /W:105 /CENTER:1 "TCheckComboBox"
AddCondition /TEXT "Button" 3 "%TREEBTN%"
AddControl /X:106 "Button" 3
AddControl /X:106 "Button" 4
AddControl /X:106 "Button" 5
AddControl /W:108 "LCLComboBox" 1
EndIfУвы, в данной реализации да. В том плагине в целом используется другой метод и, скорее всего, дополнительная поддержка именно этого контрола, позволяющая снять ограничения на изменение ширины.yozhik писал(а): Или смириться с тем что под 64бит сей комбобокс несгибаем?
Код: Выделить всё
RegDelete [\K] <ключ> [<параметр>]Код: Выделить всё
While var > 0
MsgBox(var) # --> 3 --> 2 --> 1
var = var - 1
NextПри этом в примерах видим выполнение не только пользовательских команд:CommandExec писал(а):Выполнить пользовательскую команду em_* или установить в панелях заданные пути.
Код: Выделить всё
# открывает диалог настроек
CommandExec cm_Configи при этом в последующей таблице сведения только о пользовательских em_ командах TC. В русской справке TC эти термины не пересекаются: внутренняя/встроенная — только о cm_, а пользовательская — только о em_.CommandExec писал(а):Параметры отправки внутренней команды
Код: Выделить всё
RunThread <funcname> [<param1> [.. <paramN>]
RunThread(<funcname> [, <param1> [, .. <paramN>]]Код: Выделить всё
StrPart(<str>, <delim>, <index> [, <casesense>]Код: Выделить всё
sDay = StrPart("Понедельник|Вторник|Среда|Четверг|Пятница|Суббота|Воскресенье" "|", nDay)