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 

Autorun
Goto page Previous  1, 2, 3 ... 165, 166, 167 ... 169, 170, 171  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Orion9



Joined: 01 Jan 2024
Posts: 618

Post (Separately) Posted: Mon Jan 13, 2025 17:30    Post subject: Reply with quote

AkulaBig wrote:
Скорей всего без разницы.

Как бы сказал герой одного известного фильма: "Лёлик, но ведь это не эстетично" Laughing

Если запустить монитор процессов, то уже через несколько секунд все окно будет засыпано примерно этим:
Code:
TOTALCMD.EXE   5220   CreateFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   LockFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   QueryStandardInformationFile   D:\Temp\TotalCommanderPortable\wincmd.in
TOTALCMD.EXE   5220   ReadFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   UnlockFileSingle   D:\Temp\TotalCommanderPortable\wincmd.ini   
TOTALCMD.EXE   5220   CloseFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   CreateFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   LockFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   QueryStandardInformationFile   D:\Temp\TotalCommanderPortable\wincmd.in
TOTALCMD.EXE   5220   ReadFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   UnlockFileSingle   D:\Temp\TotalCommanderPortable\wincmd.ini   
TOTALCMD.EXE   5220   CloseFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   CreateFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   LockFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   QueryStandardInformationFile   D:\Temp\TotalCommanderPortable\wincmd.in
TOTALCMD.EXE   5220   ReadFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   UnlockFileSingle   D:\Temp\TotalCommanderPortable\wincmd.ini   
TOTALCMD.EXE   5220   CloseFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   CreateFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   LockFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   QueryStandardInformationFile   D:\Temp\TotalCommanderPortable\wincmd.in
TOTALCMD.EXE   5220   ReadFile   D:\Temp\TotalCommanderPortable\wincmd.ini   SUCCESS   
TOTALCMD.EXE   5220   UnlockFileSingle   D:\Temp\TotalCommanderPortable\wincmd.ini   

Но все же я склонен с вами согласиться, что в данном случае это "без разницы". Потому что если открыть Монитор Ресурсов или Process Explorer от Sysinternals, то можно увидеть, что I/O дисковых операций от процесса Totalcmd.exe есть, но самих дисковых операций (чтения/записи) нет. Видимо, всё это просто гоняется в кэше до тех пор, пока файл на диске действительно не изменится.

Все-равно я думаю, Гислеру можно было бы сделать такую переменную, тем более что это несложно.
sa wrote:
Ещё, если это %COMMANDER_EXE% или имя программы без пути (Totalcmd.exe/TOTALCMD64.EXE). Планируется добавление shell32.dll и, возможно, imageres.dll.

Это безусловно радует, но хотелось бы, чтобы и другие библиотеки значков тоже умел читать Smile
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2681

Post (Separately) Posted: Mon Jan 13, 2025 17:51    Post subject: Reply with quote

Orion9
Там проблема в производительности, если я правильно понял:
Help wrote:
New functions and fixes in Total Commander 11.50:
Menu: Use icon defined in em_command, but only from wcmicons.dll or .ico files or from the main program, for speed reasons (virus scanners)
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 618

Post (Separately) Posted: Mon Jan 13, 2025 19:56    Post subject: Reply with quote

sa
Ну, если пользователь решит сделать меню, где у него десятки пунктов будут завязаны на значки из exe-файлов, то это его выбор. Только какое отношение это имеет к возможностям Total Commander? Smile

Да и потом, речь больше идет о DLL и ICL, содержащие пользовательские значки, помимо стандартного wcmicons.dll.

P.S. Пересмотрел и адаптировал код, который делал еще в том году, для создания трёх панелей uwdx.

 Hidden text

 Hidden text

 Hidden text

Пользовательски команды можно привязать к хоткеям или кликам мышки, например:
Code:
ControlSetMouseAction /R /K:C 3 ShowUwdxe
ControlSetMouseAction /R /K:C /K:S 3 ShowUwdxa
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 169

Post (Separately) Posted: Mon Jan 13, 2025 21:39    Post subject: Reply with quote

Orion9 wrote:

Если запустить монитор процессов, то уже через несколько секунд все окно будет засыпано примерно этим:

Запустите какой-нибудь шпион и увидите, что там творится с любым окном.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 618

Post (Separately) Posted: Mon Jan 13, 2025 23:56    Post subject: Reply with quote

AkulaBig
Да это понятно. Просто речь шла о файловых операциях как раз, а не об окнах. Loopback же подтвердил, что макрос AUTORUN_TCLANG просто считывает ключ из wincmd.ini, что равноценно обычному вызову функции IniRead. Как по мне, то между:
Code:
IniRead /R lng %COMMANDER_INI% "Configuration" "LanguageIni"
If lng = "WCMD_RUS.LNG" Then

Endif

И:
Code:
If %COMMANDER_LANG% = "WCMD_RUS.LNG" Then

Endif
Я бы однозачно выбрал второе Smile

P.S. И все-таки добрались у меня руки до функции SuperWDX. В прошлый раз ее доделать помешал плагин wdx4i, который не хотел загружаться в объект, но поскольку Loopback исправил ошибку, я решил придать всему этому какой-то законченный вид:

 Hidden text


Вывод в дополнительном поле выглядит примерно так:

 Hidden text


Ну не знаю... Вам решать. В любом случае, в Autorun сейчас есть такая возможность. Можно, конечно, при желании, все более тонко подстроить под конкретную задачу, это был лишь пример. Но главный конфиг обязательно должен в первой строке объявлять дополнительное поле:
Code:
Pragma AutorunPluginFields "SuperWdx:::GetSuperWdx"
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 169

Post (Separately) Posted: Tue Jan 14, 2025 00:28    Post subject: Reply with quote

Orion9 wrote:
Я бы однозачно выбрал второе Smile

Дак понятно, что эта переменная для удобства создана.
Orion9 wrote:
В любом случае, в Autorun сейчас есть такая возможность.

Я только что перевод DirMenu закончил. Следующий этап колонки пользователя. Может пригодиться.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 618

Post (Separately) Posted: Wed Jan 15, 2025 00:20    Post subject: Reply with quote

AkulaBig wrote:
Я только что перевод DirMenu закончил. Следующий этап колонки пользователя. Может пригодиться.

В смысле? Если Гислер сделает такую переменную? Конечно пригодится!

А еще бы очень пригодилось, если бы он сделал раскрытие переменных окружения в сплывающих подсказках. Тогда не пришлось бы прыгать с бубном и определять индекс нужной кнопки для дальнейших манипуляций. Хотя всех проблем бы это не решило, но помогло бы во многом.

А пока приходится выходить из положения вот такими функциями Smile

 Hidden text
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 618

Post (Separately) Posted: Wed Jan 15, 2025 19:21    Post subject: Reply with quote

AkulaBig
Кажется, я понял, в чём была сложность той задачи: склеенные панели имеют один серьёзный недостаток - изменения, сделанные на склеенных панелях, не применяются к панелям-источникам и не синхронизируются с ними, а значит, и смысла в такой склейке практически никакого.

Но всё-равно я пересмотрел и доработал код. Теперь панели можно выбирать из меню, открывать на главной панеле, объединять с главной панелью и закреплять для последующих быстрых вызовов.

В меню действуют модификаторы: Ctrl - выбрать и объединить, Shift - закрепить, Ctrl+Shift - перейти к файлу. Вызов без модификаторов загружает выбранную панель на главную панель инструментов.

У самой кнопки тоже есть модификаторы: Ctrl - объединить панель и открыть, Shift - открыть закрепленную панель, Ctrl+Shift - выбор типа меню, Alt - открыть объединенную панель, Win - пересоздать меню из *.bar файлов.

Под "закреплением" подразумевается выбор панели в качестве текущей для дальнейших операций. Информация о выбранной панеле записывается в секцию [Autorun] файла wincmd.ini, ключ AutoBars (например: AutoBars=Vertical.bar). Если ключа нет, то "Vertical.bar" считается умолчанием. Панели ищутся в папке, указанной в переменной BarsPath (у меня, наверное, как и у большинства, это %COMMANDER_PATH% & "\Bars\").

Выбор типа меню происходит между тремя вариантами: "ShowPopupMenu", "em_bars_panel", "DisplayOpenBar". Меню сохраняется в файле "Auto_bars.bar": ShowPopupMenu открывает этот файл встроенной функцией, "em_bars_panel" вызывает пользовательскую команду, "DisplayOpenBar" то же, что и "em_bars_panel", только с позиционированем (на основе примера от Loopback). Команда в usercmd.ini:
Code:
[em_bars_panel]
cmd=OPENBARMENU
param=%|COMMANDER_PATH|\Bars\Auto_bars.bar

Еще одна команда, которую нужно добавить в usercmd.ini:
Code:
[em_open_bar]
cmd=OPENBAR
param=%|COMMANDER_PATH|\Bars\%A0

Используется для загрузки панели на главную панель инструментов. Поскольку загруженная панель может не содержать кнопки возврата, не лишним будет сделать пользовательскую команду, которая будет загружать главную панель инструментов, и посадить ее на хоткей. Например, у меня это:
Code:
[em_open_main_bar]
cmd=OPENBAR
param=%|COMMANDER_PATH|\Bars\Main.bar


В общем, пока все это только в режиме тестирования, но некоторые удобства уже есть. Да и сам код пригодится для повторного использования в качестве наработок. Путь к Clip.vbs нужно указать в скрипте.

 Clip.vbs

 Functions.aucfg

 Buttons.aucfg

 Кнопка

 TOTALCMD.INC
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 169

Post (Separately) Posted: Wed Jan 15, 2025 20:20    Post subject: Reply with quote

Orion9 wrote:
AkulaBig
склеенные панели имеют один серьёзный недостаток - изменения, сделанные на склеенных панелях, не применяются к панелям-источникам и не синхронизируются с ними, а значит, и смысла в такой склейке практически никакого.

Вот именно такая панель мне и нужна. И в этом ее смысл. Таким образом я не передаю свой мусор в сборку.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 618

Post (Separately) Posted: Thu Jan 16, 2025 00:08    Post subject: Reply with quote

AkulaBig, я понял.

Просто я почувствовал то же самое, что, вероятно, чувствовали и вы: не смог до конца понять, что мне нужно, и внятно сформулировать задачу Laughing Причину этого описал выше - склеенная панель несет больше проблем, чем пользы. Малейший рассинхрон - и можно окончательно запутаться в трех соснах трех панелях: главной, вспомогательной и объединенной. Что самое плохое - склеенную панель уже не так просто разобрать на части, как ее собрать.

Но может быть для вашей задачи это и не нужно? Может быть, вам просто достаточно сделать две одинаковые главные панели и переключаться между ними по кругу: одна - официальная, другая - черновая. На вторую вы и будете докидывать кнопки, которые используются только для вашей работы, а первая будет оставаться в нетронутом виде. И алгоритм от этого будет гораздо проще, а значит и круче ))

Переключение по кругу между тремя панелями:
Code:
# Alt+F1
SetHotkeyAction /K:A /H:F1 MainBarCycle

Func MainBarCycle()
   Static j = -1, aBarName = List("Main","Help", "Vertical")
   j += 1
   j = (j > aBarName.Count - 1 ? 0 : j)
   bar = "%COMMANDER_PATH%\Bars\" & aBarName[j] & ".bar"         
   IniWrite /R %COMMANDER_INI% "Buttonbar" "Buttonbar" %bar%
   SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
   SendCommand 2901
   SendCommand 2901
   sleep(50)
   SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
   WinRedraw(1)
   ShowHint("Включена: " & aBarName[j] & ".bar")
   Sleep(800)
   WinSetState(23)
EndFunc

Если не нужно запоминать панель в wincmd.ini и посылать cm_VisButtonBar для обновления изменений в окне ТС, то можно просто загружать ее командой OPENBAR, как это сделано постом выше, т.е CommandExec("em_open_bar", aBarName[j] & ".bar")
Code:
[em_open_bar]
cmd=OPENBAR
param=%|COMMANDER_PATH|\Bars\%A0

Но тогда при выходе, главная панель будет оставаться одной и той же.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 169

Post (Separately) Posted: Thu Jan 16, 2025 06:26    Post subject: Reply with quote

Orion9 wrote:

Просто я почувствовал то же самое, что, вероятно, чувствовали и вы: не смог до конца понять, что мне нужно

Не поняли меня на форуме TCIMG. Поэтому пришлось самому команду доделывать. А я-то прекрасно знал, что мне нужно.
Orion9 wrote:
склеенная панель несет больше проблем, чем пользы.

Несколько лет уже пользуюсь и очень доволен.
Orion9 wrote:
можно окончательно запутаться в трех соснах трех панелях: главной, вспомогательной и объединенной.

У меня всего две панели. Главная и пользователя. Если не лень, посмотрите видео про эту панель в папке моей сборки. Там все подробно показано.
Orion9 wrote:
Может быть, вам просто достаточно сделать две одинаковые главные панели

И все это будет храниться в папке ТС и передаваться вместе со сборкой. Вы предлагаете стандартный вариант, по которому все делают дополнительные панели и который меня совершенно не устраивает.

Вот посмотрите. Я работаю в ТС. Когда мне надо воспользоваться какой-то программкой, я щелкаю по файлу и запускаю ПП. После перезагрузки ПП исчезла. Никакого мусора я через сборку не передаю.
Главный смысл моей панели, что она должна храниться в отдельном месте.
Orion9 wrote:

можно просто загружать ее командой OPENBAR

Именно так у меня и происходит.
Orion9 wrote:

Но тогда при выходе, главная панель будет оставаться одной и той же.

Именно это мне и нужно.
Собственно меня моя панель полностью устраивает. Отказываться от TCIMG я не собираюсь. У меня очень много на ней завязано.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 618

Post (Separately) Posted: Thu Jan 16, 2025 11:22    Post subject: Reply with quote

AkulaBig wrote:
И все это будет храниться в папке ТС и передаваться вместе со сборкой.

С чего вы решили? Просто поменяйте относительный путь на абсолютный, и все.

Мой последний пример остается в силе. Уберите третий элемент массива, замените относительный путь и добавьте em_команду. Можете сделать проверку существования вашего личного файла: если он не существует, ничего не переключать.

А пользователю вся эта склейка панелей (да еще и с выбором в каталоге) вряд ли нужна, уж поверьте.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 169

Post (Separately) Posted: Thu Jan 16, 2025 12:31    Post subject: Reply with quote

Orion9 wrote:

А пользователю вся эта склейка панелей (да еще и с выбором в каталоге) вряд ли нужна, уж поверьте.

Я вообще-то тоже пользователь и мне нужна именно такая панель и никакая другая. Мне не нужны две панели, между которыми я буду переключаться.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 618

Post (Separately) Posted: Thu Jan 16, 2025 14:01    Post subject: Reply with quote

AkulaBig wrote:
Мне не нужны две панели, между которыми я буду переключаться.

А сейчас вы что делаете, не переключаетесь, что ли? Laughing

 P.S.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 169

Post (Separately) Posted: Thu Jan 16, 2025 14:19    Post subject: Reply with quote

Orion9 wrote:

А сейчас вы что делаете, не переключаетесь, что ли? Laughing

Не переключаюсь. просто к основной панели добавляю ПП. При этом основная панель доступна.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 165, 166, 167 ... 169, 170, 171  Next
Page 166 of 171

 
Jump to:  
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