View previous topic :: View next topic |
Author |
Message |
Orion9

Joined: 01 Jan 2024 Posts: 636
|
(Separately) Posted: Sat Jan 11, 2025 13:41 Post subject: |
|
|
AkulaBig
Круто)) Еще бы пример вызова в шапке не помешал, на мой взгляд. А так, конечно, приятнее и понятнее стало смотреться.
Вы собираетесь секцию [DirMenu] тоже в поток прикручивать? |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 191
|
(Separately) Posted: Sat Jan 11, 2025 13:52 Post subject: |
|
|
Orion9 wrote: | AkulaBig
Круто)) Еще бы пример вызова в шапке не помешал, на мой взгляд |
Вызов практически не изменился от вашего. Переменным только видимость сменил и увеличил их количество. Хотя сам вызов скрипта да, изменен:
Code: |
Global script = %COMMANDER_PATH% & "\Scripts\ChangeLang.vbs"
RunThread ThreadWatchLang
Func ThreadWatchLang
Local lng, cpu, mls, lng1, lng2, MainMenu
Local ini = %COMMANDER_PATH% & "\Ini\User.ini"
Local sect = "User"
lng1 = AUTORUN_TCLANG
While 1
lng2 = AUTORUN_TCLANG
If Not (lng1 = lng2) Then
Switch lng2
Case 'ENG'
lng = "eng"
Case 'RUS'
lng = "rus"
EndSwitch
ShellExec /SW_HIDE /WAIT '%script%' '"%ini%" "%sect%" "%lng%"'
CommandExec cm_ReloadBarIcons
lng1 = lng2
Else
If AUTORUN_TCLANG = 'ENG' Then
IniRead MainMenu %COMMANDER_INI% "Configuration" "Mainmenu"
If MainMenu = "" Then
CommandExec em_changelng_mnu
EndIf
EndIf
EndIf
|
Orion9 wrote: |
Вы собираетесь секцию [DirMenu] тоже в поток прикручивать? |
Вообще все многоязычное. Иначе не стал-бы время тратить на универсальность. Там ведь и колонки пользователя и названия wfx-плагинов (если это возможно). И т.д. Это ладно я еще не все фишки ТС использую. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 636
|
(Separately) Posted: Sat Jan 11, 2025 16:36 Post subject: |
|
|
AkulaBig wrote: | Вызов практически не изменился |
Я имел в виду что-то вроде вот этого
 Hidden text Code: | ; AHK v2
; originally posted by maestrith
; https://autohotkey.com/board/topic/94083-ahk-11-font-and-color-dialogs/
; ===============================================================
; Example
; ===============================================================
; global cc, defColor
; cc := 0x00FF00 ; green
; defColor := [0xAA0000,0x00AA00,0x0000AA]
; oGui := Gui("-MinimizeBox -MaximizeBox","Choose Color")
; oGui.OnEvent("close",close_event)
; oGui.OnEvent("escape",close_event)
; oGui.AddButton("w150","Choose Color").OnEvent("click",choose_event)
; oGui.BackColor := cc
; oGui.Show("")
; return
; choose_event(ctl,info) {
; Global cc, defColor
; hwnd := ctl.gui.hwnd ; grab hwnd
; cc := "0x" ctl.gui.BackColor ; pre-select color from gui background (optional)
; cc := ColorSelect(cc,hwnd,&defColor,0) ; specifying start color, parent window, starting custom colors, and basic display
; If (cc = -1)
; return
; colorList := ""
; For k, v in defColor ; if user changes Custom Colors, they will be stored in defColor array
; If v
; colorList .= "Index: " k " / Color: " Format("0x{:06X}",v) "`r`n"
; ctl.gui.BackColor := cc ; set gui background color
; If cc
; msgbox "Output color: " cc "`r`n`r`nCustom colors saved:`r`n`r`n" Trim(colorList,"`r`n")
; }
; close_event(guiObj) {
; ExitApp
; }
; ===============================================================
; END Example
; ===============================================================
; =============================================================================================
; Parameters
; =============================================================================================
; Color = Start color (0 = black) - Format = 0xRRGGBB
; hwnd = Parent window
; custColorObj = Array() to load/save custom colors, must be &VarRef
; disp = 1=full / 0=basic ... full displays custom colors panel, basic does not
; =============================================================================================
; All params are optional. With no hwnd the dialog will show at top left of screen. Use an
; object serializer (like JSON) to save/load custom colors to/from disk.
; =============================================================================================
ColorSelect(Color := 0, hwnd := 0, &custColorObj := "",disp:=false) {
Static p := A_PtrSize
disp := disp ? 0x3 : 0x1 ; init disp / 0x3 = full panel / 0x1 = basic panel
If (custColorObj.Length > 16)
throw Error("Too many custom colors. The maximum allowed values is 16.")
Loop (16 - custColorObj.Length)
custColorObj.Push(0) ; fill out custColorObj to 16 values
CUSTOM := Buffer(16 * 4, 0) ; init custom colors obj
CHOOSECOLOR := Buffer((p=4)?36:72,0) ; init dialog
If (IsObject(custColorObj)) {
Loop 16 {
custColor := RGB_BGR(custColorObj[A_Index])
NumPut "UInt", custColor, CUSTOM, (A_Index-1) * 4
}
}
NumPut "UInt", CHOOSECOLOR.size, CHOOSECOLOR, 0 ; lStructSize
NumPut "UPtr", hwnd, CHOOSECOLOR, p ; hwndOwner
NumPut "UInt", RGB_BGR(color), CHOOSECOLOR, 3 * p ; rgbResult
NumPut "UPtr", CUSTOM.ptr, CHOOSECOLOR, 4 * p ; lpCustColors
NumPut "UInt", disp, CHOOSECOLOR, 5 * p ; Flags
if !DllCall("comdlg32\ChooseColor", "UPtr", CHOOSECOLOR.ptr, "UInt")
return -1
custColorObj := []
Loop 16 {
newCustCol := NumGet(CUSTOM, (A_Index-1) * 4, "UInt")
custColorObj.InsertAt(A_Index, RGB_BGR(newCustCol))
}
Color := NumGet(CHOOSECOLOR, 3 * A_PtrSize, "UInt")
return Format("0x{:06X}",RGB_BGR(color))
RGB_BGR(c) {
return ((c & 0xFF) << 16 | c & 0xFF00 | c >> 16)
}
}
; typedef struct tagCHOOSECOLORW { offset size (x86/x64)
; DWORD lStructSize; |0 | 4
; HWND hwndOwner; |4 / 8 | 8 /16
; HWND hInstance; |8 /16 | 12/24
; COLORREF rgbResult; |12/24 | 16/28
; COLORREF *lpCustColors; |16/28 | 20/32
; DWORD Flags; |20/32 | 24/36
; LPARAM lCustData; |24/40 | 28/48 <-- padding for x64
; LPCCHOOKPROC lpfnHook; |28/48 | 32/56
; LPCWSTR lpTemplateName; |32/56 | 36/64
; LPEDITMENU lpEditInfo; |36/64 | 40/72
; } CHOOSECOLORW, *LPCHOOSECOLORW;
|
Предельное удобство в шапке с примером и параметрами ))
AkulaBig wrote: | Переменным только видимость сменил и увеличил их количество. |
А проценты в заголовке оставили? А то ведь я без них жить не могу
AkulaBig wrote: | Вообще все многоязычное. Иначе не стал-бы время тратить на универсальность. Там ведь и колонки пользователя и названия wfx-плагинов |
Ого, да вы серьезно решили развернуться. Может быть и получится - это надо пробовать. Но как я писал выше, команда, которая перечитывала бы всю конфигурацию ТС, как при его запуске, очень бы не помешала. А то без нее может и не получиться. Хотя названия wfx, по-моему, Тотал перечитывает без проблем. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 191
|
(Separately) Posted: Sat Jan 11, 2025 17:23 Post subject: |
|
|
Orion9 wrote: |
Предельное удобство в шапке с примером и параметрами ))
|
А, вы имеете ввиду в шапке скрипта. Ну да, в AkelPad так оформляют скрипты. Удобно. Но тут не понятно, пример вызова скрипта отдельно привести или из Autorun? Видимо оба варианта надо.
Orion9 wrote: |
А проценты в заголовке оставили? А то ведь я без них жить не могу
|
Вы имеете ввиду проценты задержки от загрузки процессора? Я их сразу переделал, но оставил:
Code: |
cpu = GetCPUUsage()
If cpu < 60 Then
mls = 500
ElseIf cpu < 90 Then
mls = 700
Else
mls = 1000
EndIf
# OutputDebugString("Autorun: mls = " & mls & " lng1 = " & lng1 & " lng2 = " & lng2)
Sleep(mls)
|
Orion9 wrote: |
Ого, да вы серьезно решили развернуться. Может быть и получится - это надо пробовать. |
Дак если делать, то все.
Orion9 wrote: |
команда, которая перечитывала бы всю конфигурацию ТС, как при его запуске, очень бы не помешала. А то без нее может и не получиться. |
Да. Попробую предложить Гислеру. Еще лучше, если-бы он действительно сделал ТС многоязыковым.
Добавлено спустя 1 час 5 минут:
К сожалению, это невозможно, извините. Просто перезапустите TC с помощью, например,
cm_exit 1
 |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 636
|
(Separately) Posted: Sat Jan 11, 2025 19:53 Post subject: |
|
|
AkulaBig wrote: | К сожалению, это невозможно, извините. Просто перезапустите TC с помощью, например,
cm_exit 1
 |
Это был ответ Гислера что ли?
AkulaBig wrote: | Но тут не понятно, пример вызова скрипта отдельно привести или из Autorun? Видимо оба варианта надо. |
Наверное, на ваше усмотрение. Все зависит от того, сколько времени и желания вы в это вложите ))
AkulaBig wrote: | Вы имеете ввиду проценты задержки от загрузки процессора? |
Нет. Я имел в виду, что к вашему коду сейчас можно добавить буквально всего одну строчку перед Sleep, и весь поток заиграет другими красками
Code: | WinSetText(StartTitle & " | Memory: " & GetMemStats(0) & "% CPU: " & cpu & "%") |
Я писал об этом пару страниц назад, вы, наверное, пропустили? |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 191
|
(Separately) Posted: Sat Jan 11, 2025 20:09 Post subject: |
|
|
Orion9 wrote: |
Это был ответ Гислера что ли?
|
Ну да. Причем еще от прошлого года. просили люди его уже об этом. Если интересно https://www.ghisler.ch/board/viewtopic.php?p=466665#p466665
Orion9 wrote: |
Я писал об этом пару страниц назад, вы, наверное, пропустили? |
Да, пропустил. Сейчас понял. Я вообще эту фишку видел в других сборках. Как-то мне не очень зашло. Попробую.
Дак мы с Хранителем Традиций в это время бурную переписку вели. Я и забыл даже вам ответить.
Заменил Memory на RAM  |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 636
|
(Separately) Posted: Sat Jan 11, 2025 23:59 Post subject: |
|
|
AkulaBig wrote: | Ну да. Причем еще от прошлого года. просили люди его уже об этом. |
Ну я так и подумал Знаменит он такими ответами: это невозможно, да то невозможно. Тут как-то в топике всплывало уже, что он когда-то говорил о невозможности изменения нижних функциональных кнопок, однако почему-то у меня сейчас на нижней кнопке выхода и левый клик висит, и правый, и клик с Ctrl, и двойной клик с Ctrl; да и сама кнопка называется не "Alt+F4 Выход", а "Autorun" - как и должна была называться с самого начала
AkulaBig wrote: | Если интересно |
А оперативно вы "залили" вопрос на англоязычный форум, даже не ожидал Смотрю там и Fla$her успел тоже отметиться - ну никак не хочет возвращаться домой, бродяга, уже даже ждать его устал
AkulaBig wrote: | Как-то мне не очень зашло. Попробую. |
Ну, это вы напрасно. Я пока не посмотрю на проценты в заголовке, спать не ложусь! А если и ложусь, то уснуть не могу
Хорошо, если серьезно: вы можете туда не только датчики производительности вывести, но и другое что-то придумать, поток-то все-равно крутится, и фактически вхолостую. Можно, например, проверку какую-нибудь раз в полчаса делать или данные из au3-скрипта переодически вытягивать - здесь есть где развернуться фантазии.
А тем временем, я опробовал новую технику создания бар-файла и передачи из него параметров назад в Autorun через cm_ команду. Очень неплохо получилось, но есть один недостаток: команда прописывается в TOTALCMD.INC, поэтому придется самостоятельно следить за этим файлом при обновлении ТС. А если команда еще имеет и русскоязычное описание в WCMD_RUS.INC, то придется следить и за этим файлом.
Из плюсов: не нужно регистрировать кучу однотипных команд для соответствия каждому пункту меню или использовать внешние утилиты для вызова, типа TCFS2.
TOTALCMD.INC
Code: | [________Autorun_________]=0
cm_UwdxBarItem=70301;Uwdx Bar Menu |
 Plugin.aucfg Code: | Global BarsPath = %COMMANDER_PATH% & "\Bars\"
RegisterCommand 70300 "UwdxBar"
RegisterCommand 70301 "UwdxBarItem"
Func UwdxBar(lParam)
Local wdx, i = 1, name, p = BarsPath, n = "Auto_uwdx", bar = p & n & '.bar'
Local b_Ctrl = IsPressed(0x11), b_Shift = IsPressed(0x10), b_Alt = IsPressed(0x12), b_Win = IsPressed(0x58)
If Not b_Ctrl And Not b_Alt And Not b_Shift Then
If FileExist(bar) Then
ShowPopupMenu /D %bar%
Else
ShowHint("Не найден " & bar)
EndIf
Return
EndIf
If b_Shift Then
CommandExec /CD:S %bar%
Return
EndIf
ShowDarkHint("Создание панели", 0)
If Not CreateNewBar(p, n, 0) Then
ShowDarkHint("Отмена операции", 0)
Return
EndIf
While i < 100
IniRead /R wdx %COMMANDER_INI% "ContentPlugins" %"%i%-1" "stop"
If wdx="stop" Then Break
name = StrTrim(StrRight(wdx, StrLen(wdx)-StrPos(wdx, "\", -1)))
IniWrite /EV- %bar% "Buttonbar" %"'Button' & %i%+1" "%COMSPEC%"
IniWrite %bar% "Buttonbar" %"'Cmd' & %i%+1" %"'cm_UwdxBarItem ' & %i%+1"
IniWrite %bar% "Buttonbar" %"'Menu' & %i%+1" "%name%"
i += 1
Wend
IniWrite %bar% "Buttonbar" "Buttoncount" %"%i%"
ShowDarkHint("Панель создана", 0)
EndFunc
Func UwdxBarItem(lParam)
Local bar = %COMMANDER_PATH% & "\Bars\Auto_uwdx.bar"
Local uwdx = %COMMANDER_PATH% & "\Plugins\uwdx\", plugin, params, f, p, n
Local b_Ctrl = IsPressed(0x11), b_Shift = IsPressed(0x10), b_Alt = IsPressed(0x12)
If Not FileExist(uwdx & "uwdx.exe") Then
ShowHint("Не найден " & uwdx & "uwdx.exe")
Return
EndIf
p = RequestCopyDataInfo("SP")
n = RequestCopyDataInfo("SN")
f = p & n
keys = '/i /e '
If b_Ctrl Then keys = "/i "
IniRead plugin %bar% "Buttonbar" %"'Menu' & lParam"
#ShowHint(lParam & ". " & b)
If b_Shift Then
ShellExec %COMSPEC% '/K TITLE %plugin% & uwdx.exe /i %plugin%' %uwdx%
Return
EndIf
ShellExec %COMSPEC% '/K TITLE %plugin% & uwdx.exe %keys% %plugin% "%f%"' %uwdx%
EndFunc |
 Functions.aucfg Code: | Func ShowDarkHint(DarkHint, HintSleep = 1000)
SetHintParam("ShowHint", "Font", 10, "Arial")
SetHintParam("ShowHint", "BackColor", 0x001C1C1C)
SetHintParam("ShowHint", "Text", 0xFFFFFF)
ShowHint(DarkHint)
If HintSleep > 0 Then
Sleep(HintSleep)
WinSetState(23)
Else
Sleep(100)
Endif
SetHintParam("ShowHint", "Reload")
EndFunc
Func CreateNewBar(BarPath, BarName, BackButton = true)
Local bar, br2, def
bar = BarPath & BarName & ".bar"
br2 = BarPath & BarName & ".br2"
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%bar%"""
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%br2%"""
If FileExist(bar) Then
ShowDarkHint("Ошибка удаления " & bar, 0)
Return false
Endif
IniWrite %bar% "Buttonbar" "Buttoncount" "0"
If ERROR = 1 Then
ShowDarkHint("Ошибка создания " & bar, 0)
Return false
EndIf
IniRead def %COMMANDER_INI% "Buttonbar" "Buttonbar" "%COMMANDER_PATH%\DEFAULT.BAR"
If BackButton Then
IniWrite %bar% "Buttonbar" "Button1" "wcmicons.dll,15"
IniWrite %bar% "Buttonbar" "Cmd1" %def%
IniWrite %bar% "Buttonbar" "Menu1" "Вернуться"
Endif
Return true
EndFunc
|
Модули можно подключить к основной конфинурации директивой Pragma:
Pragma Include %COMMANDER_PATH%\Ini\Scripts\Plugin.aucfg
Pragma Include %COMMANDER_PATH%\Ini\Scripts\Functions.aucfg
 Кнопка Code: | TOTALCMD#BAR#DATA
70300
%COMMANDER_EXE%
Панель плагинов Uwdx|Ctrl - Создание новой панели|Shift - Перейти к файлу панели
1
-1
|
Кнопка открывает все установленные wdx-плагины в виде меню и отображает информацию по каждому плагину в утилите uwdx.При выборе плагина по умолчанию отображаются все непустые поля файла под курсором. Удержание CTRL - все поля. SHIFT - структура плагина. Если панель существует, при нажатии на кнопку она будет открыта сразу. CTRL - пересоздание панели. SHIFT - переход к файлу панели. Название файла панели и путь к утилите uwdx.exe нужно поменять в скрипте (у меня это %COMMANDER_PATH% & "\Plugins\uwdx).
В общем, получилась еще одна неплохая и полезная кнопка, как это и всегда бывает с плагином Autorun ) |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 191
|
(Separately) Posted: Sun Jan 12, 2025 00:39 Post subject: |
|
|
Orion9 wrote: |
Из плюсов: не нужно регистрировать кучу однотипных команд для соответствия каждому пункту меню |
Дак это наоборот нововведение ТС 11.50. Теперь вместо недокументированной фичи, когда в totalcmd.ini с команды номер 60000 можно было прописывать пользовательские команды чтобы отобразить значок в меню, можно напрямую прописывать в пользовательской команде значок. При этом не надо отслеживать порядок команд, как через totalcmd.ini. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 636
|
(Separately) Posted: Sun Jan 12, 2025 13:50 Post subject: |
|
|
AkulaBig
Ты глянь, и правда можно Но только если это wcmicons.dll или путь к ico-файлу, а я уж губу раскатал на что-то большее...) Но хоть так, и то уже лучше.
Но говоря о куче однотипных команд, я имел в виду другое. Самый большой недостаток вызова зарегистрированной комады по коду - в неё нельзя передать параметр, если вызов происходит из кнопки или пункта меню. Единственный способ передать параметр в таком случае - использовать внешний вызов с посылкой сообщения через PostMessage с указанием кода команды и одного числового параметра. Например, регистрируем команду с кодом 70300 и привязываем к нему функцию UwdxBar:
Code: | RegisterCommand 70300 "UwdxBar"
Func UwdxBar(lParam)
ShowHint(lParam)
EndFunc |
Теперь, чтобы вызвать эту функцию из кнопки или пункта меню, достаточно просто указать код 70300:
Code: |
TOTALCMD#BAR#DATA
70300
%COMMANDER_EXE%
Функция Autorun "UwdxBar"
1
-1
|
Но передать в нее параметр (lParam) таким образом не получится. Здесь нужен либо внешний вызов (например TCFS2.exe /ef "msg(1075, 70300, 55, 1)", где 55 - передаваемый параметр), либо регистрация номера команды в TOTALCMD.INC и присвоение ему имени, т.е. Code: | [________Autorun_________]=0
cm_UwdxBar=70300;Uwdx Bar Menu |
Тогда параметр можно передать кнопке:
Code: | TOTALCMD#BAR#DATA
cm_UwdxBar
55
%COMMANDER_EXE%
Функция Autorun "UwdxBar" (55)
1
-1
|
А теперь допустим мне нужно создать панель или (что еще хуже) меню из 55 пунктов. Как в таком случае передать параметр каждому пункту меню? Есть три варианта: (1) зарегистрировать заранее все номера с параметром, как я это делал раньше, например:
Code: | RegisterCommand 70110 "WdxMenuItem" 0
RegisterCommand 70111 "WdxMenuItem" 1
RegisterCommand 70112 "WdxMenuItem" 2
RegisterCommand 70113 "WdxMenuItem" 3
RegisterCommand 70114 "WdxMenuItem" 4
RegisterCommand 70115 "WdxMenuItem" 5
...
RegisterCommand 70165 "WdxMenuItem" 55
|
Каждой кнопке будет сопоставлен свой уникальный код. (Именно об этой куче команд я и говорил).
Второй вариант - посылка параметра через сообщение, т.е. в созданной панели у каждой кнопки будет вариация: TCFS2.exe /ef "msg(1075, 70300, 0, 1) - TCFS2.exe /ef "msg(1075, 70300, 55, 1).
И третий способ (который я и попробовал вчера) - прописка cm_ команды в TOTALCMD.INC - тогда у каждой кнопки будет вариация: cm_UwdxBar 1 - cm_UwdxBar 55. Как видите, у каждого способа есть свои плюсы и минусы.
P.S. Обнаружил, что в ТС х64 переключение ассоциаций с вызовом окна и прожатием кнопки не работает. Оказывается в 64-версии имя класса кнопок и номера их экземпляров отличаются, пришлось это учесть исправлением строки поиска кнопки на:
Code: | b = WinFind(h, (AUTORUN_TCARCH = 32 ? "TButton" : "Button"), (AUTORUN_TCARCH = 32 ? 3 : 2)) |
Сама функция при этом не изменилась:
 Hidden text Code: | Func AssocWinSynс()
Local h = 0, i
PostMessage(AUTORUN_TCHANDLE, 0x433, 519)
# ожидание появления окна
For i = 1 To 75
h = WinFind(0, "TDlgCustomColors")
If h > 0 Then Break
Sleep(25)
#OutputDebugString(h)
Next
If h > 0 Then
b = WinFind(h, (AUTORUN_TCARCH = 32 ? "TButton" : "Button"), (AUTORUN_TCARCH = 32 ? 3 : 2))
SendMessage(b, 0xF5, 0, 0)
Else
ShowHint("Окно не найдено")
Return
Endif
AssocUpdateWin(false)
EndFunc
|
|
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 191
|
(Separately) Posted: Sun Jan 12, 2025 14:41 Post subject: |
|
|
Orion9 wrote: |
Каждой кнопке будет сопоставлен свой уникальный код. (Именно об этой куче команд я и говорил).
|
Понятно.
Orion9 wrote: |
P.S. Обнаружил, что в ТС х64 переключение ассоциаций с вызовом окна и прожатием кнопки не работает. |
Потому что ТС х32 и ТС х64 написаны на разных языках. Изначальный, не очень удачный выбор языка программирования сейчас для Гислера является таким головняком. Но уже ничего не поменяешь. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 636
|
(Separately) Posted: Sun Jan 12, 2025 17:28 Post subject: |
|
|
AkulaBig
Тут пришла идея... Возможно, даже Гислер согласится такое сделать.
В общем, что если попросить его добавить еще одну переменную окружения типа COMMANDER_*, которая будет хранить информацию о текущем языке? Например: %COMMANDER_LANG% = WCMD_RUS.LNG
Тогда бы в цикле можно было проверять эту переменную, а не "дергать" ini-файл каждую секунду. И, кстати, каждая запущенная копия ТС имела бы свою переменную, а не общий ключ из ini. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 191
|
(Separately) Posted: Sun Jan 12, 2025 18:02 Post subject: |
|
|
Orion9 wrote: | не "дергать" ini-файл каждую секунду. |
Вы имеете виду, что Autorun его дергает? Я вообще инишник не трогаю. Насчет дерганья это вообще такое неочевидное действие. Весь компьютер дергается от кварца. Все оконные процедуры. Та-же новая переменная тоже будет дергать.
Orion9 wrote: | каждая запущенная копия ТС имела бы свою переменную, а не общий ключ из ini. |
Она и сейчас через Autorun имеет. А толку в этом, если инишник один на все копии. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 636
|
(Separately) Posted: Sun Jan 12, 2025 18:48 Post subject: |
|
|
AkulaBig wrote: | А толку в этом, если инишник один на все копии. |
Да, об этом я не подумал. Видимо, с этим ничего не поделаешь, если только Гислер не поменяет что-то. Но все-равно чтение переменной окружения, будь она доступна, выглядит, на мой взгляд, лучше, чем вызов макроса Autorun, который обращается каждый раз к ini-файлу, разве нет? |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 191
|
(Separately) Posted: Sun Jan 12, 2025 21:09 Post subject: |
|
|
Orion9 wrote: | Но все-равно чтение переменной окружения, будь она доступна, выглядит, на мой взгляд, лучше, чем вызов макроса Autorun, который обращается каждый раз к ini-файлу, разве нет? |
Скорей всего без разницы. |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2684
|
(Separately) Posted: Mon Jan 13, 2025 11:58 Post subject: |
|
|
Orion9 wrote: | Но только если это wcmicons.dll или путь к ico-файлу, а я уж губу раскатал на что-то большее.. | Ещё, если это %COMMANDER_EXE% или имя программы без пути (Totalcmd.exe/TOTALCMD64.EXE). Планируется добавление shell32.dll и, возможно, imageres.dll. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|