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 

Утилита для работы с плагинами WDX из командной строки
Goto page Previous  1, 2
 
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: 178

Post (Separately) Posted: Sat Mar 23, 2024 20:42    Post subject: Reply with quote

Loopback wrote:
Добавить-то наверно можно, но не слишком ли много опций для одного режима вывода? Smile Опять же, есть поля, а есть еще единицы...

Да норм будет. Юниты, конечно, не нужны, а вот поля некоторые неплохо было бы исключить при выводе. По сути, на выходе получится компакный блок, который можно будет объединять с другими компактными блоками и пускать сразу в хинт. Например, взять все непустое и нужное из Ntlinks, Ntfsfilestreams, Filex и т.п. и сразу выводить альтернативную подсказку к файлу. Да и обрабатывать компакный блок будет легче в других скриптах и батниках.

А теперь некое удобство от благодарного пользователя! Smile

Скрипт на Autorun, который создает три bar-файла для быстрого тестирования всех имеющихся плугов в утилите uwdx. Поменяйте пути при необходимости. Также нужна утилита TCFS2, которая посылает сообщение окну ТС и запускает сам скрипт. Cкрипт перебирает секцию контентных плагинов и формирует соответствующие файлы панелей, которые впоследствии можно перетащить на главную панель инструментов и использовать в качестве выпадающих меню. Также можно настроить показ самих меню через ControlSetMouseAction и пользовательские команды в usercmd.ini (по-умолчанию Ctrl+ПКМ и Shift+Ctrl+ПКМ). Скрипт удаляет файлы uwdx*.bar в папке %COMMANDER_PATH%\Bars\, так что будьте осторожны и проверьте все еще раз.

Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utilites\TCFS2\TCFS2.exe
/ef "msg(regmsg(UwdxMessage), 0, 0)"
%COMMANDER_PATH%\Plugins\uwdx\uwdx.exe
Создать панели uwdx


-1

autorun.cfg
Code:
ControlSetMouseAction /R /K:C 3 ShowUwdxe
ControlSetMouseAction /R /K:C /K:S 3 ShowUwdxa

SetMessageAction "UwdxMessage" CreateUwdxBars

Func ShowUwdxe
   CommandExec em_uwdxe
EndFunc

Func ShowUwdxa
   CommandExec em_uwdxa
EndFunc

Func CreateUwdxBars
Local f = 0
   f = f + CreateUwdxBar("uwdxa")
   f = f + CreateUwdxBar("uwdxe")
   f = f + CreateUwdxBar("uwdxp")   
   MsgBox(f & " из 3 файлов было создано", "uwdx")
EndFunc

Func CreateUwdxBar(barname)
Local i, barfile, br2file
#Local uwdx = %COMMANDER_PATH% & "\Plugins\uwdx\uwdx.exe"
barfile = %COMMANDER_PATH% & "\Bars\" & barname & ".bar"
br2file = %COMMANDER_PATH% & "\Bars\" & barname & ".br2"
 
   ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%barfile%"""
   ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%br2file%"""
   If FileExist(barfile) Then   
      MsgBox("Ошибка удаления " & barfile, "uwdx")
      Return 0
   Endif
   IniWrite %barfile% "Buttonbar" "Buttoncount"  "0"
   If ERROR = 1 Then
      MsgBox("Ошибка создания " & barfile, "uwdx")
      Return 0   
   EndIf
   Set /EV-      cmd "%COMSPEC% /k"
   Set /EV-     uwdx "%COMMANDER_PATH%\Plugins\uwdx\uwdx.exe"
   Set /EV-    uwdxp "%%COMMANDER_PATH%%\Plugins\uwdx\uwdx.exe"
   Set /EV- testfile "%P%N"
 
   i=0
   While i<55
      IniRead /R wdx %COMMANDER_INI% "ContentPlugins" %"%i%" "stop"
      If wdx="stop" Then Break
     
      wdx = StrTrim(StrRight(wdx, StrLen(wdx)-StrPos(wdx, "\", -1)))
     
      IniWrite %barfile% "Buttonbar" %"'Button' & %i%+1" "%uwdx%"
      IniWrite %barfile% "Buttonbar" %"'Cmd' & %i%+1"     %cmd%
      IniWrite %barfile% "Buttonbar" %"'Menu' & %i%+1"   "%wdx%" 
         
      If barname="uwdxa" Then
         IniWrite %barfile% "Buttonbar" %"'Param' & %i%+1"  '"""%uwdxp%""" /I %wdx% ""%testfile%""'
      ElseIf barname="uwdxe" Then
         IniWrite %barfile% "Buttonbar" %"'Param' & %i%+1"  '"""%uwdxp%""" /E /I %wdx% ""%testfile%""'
      Else
         IniWrite %barfile% "Buttonbar" %"'Param' & %i%+1"  '"""%uwdxp%""" /I "%wdx%"'
      Endif
      i = i + 1
   Wend
   IniWrite %barfile% "Buttonbar" "Buttoncount"  %i%
   Return 1
EndFunc


usercmd.ini
Code:
[em_uwdxe]
button=
cmd=OPENBARMENU %COMMANDER_PATH%\Bars\uwdxe.bar
iconic=1
[em_uwdxa]
button=
cmd=OPENBARMENU %COMMANDER_PATH%\Bars\uwdxa.bar
iconic=1

P.S. Писать скрипты на Autorun - одно удовольствие Smile
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1290

Post (Separately) Posted: Sun Mar 24, 2024 15:02    Post subject: Reply with quote

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

Ок, убедили. Обновил версию, добавлен переключатель /X. Чтобы не усложнять синтаксис, переключатель добавляет в исключения только одно поле, но этих переключателей может быть несколько.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 178

Post (Separately) Posted: Sun Mar 24, 2024 18:52    Post subject: Reply with quote

Loopback
Круто получилось. Проверил и по индексу, и с комбинированием по имени - все работает!

Ну теперь сам бог велел добавить опцию включения (вывода на экран) только требуемых полей Laughing Сейчас утилита получает значение одного поля и выводит его в консоль - это, безусловно, можно (и даже нужно) оставить как есть.

Один момент. В справке как-то неоднозначно звучит:
Quote:
/X:field - Опционально. Добавляет имя или индекс поля плагина, которое будет исключено в режиме вывода всех полей. Этот переключатель может использоваться многократно. Имена с пробелами необходимо взять в кавычки.

Ведь есть же еще сокращенный вывод, и ключик в нем тоже работает. Кстати, русское описание на ключ /E почему-то отсутствует.

А еще утилиту хотелось бы видеть в:
https://wincmd.ru/directory/util.html
Я только недавно узнал, что авторы сами берут на себя обязанность выкладывать на wincmd.ru, а ведь так можно много чего интересного пропустить, включая последнии версии.
Back to top
View user's profile Send private message
jentoso



Joined: 20 Dec 2007
Posts: 351

Post (Separately) Posted: Sun Mar 24, 2024 20:01    Post subject: Reply with quote

Orion9
Можно через плагин Versions настроить отслеживание новых версий плагинов, программ, на любом сайте где они чаще обновляются и обитают.
_________________
TC 11.03 combo, Windows 10 x64
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1290

Post (Separately) Posted: Sun Mar 24, 2024 22:30    Post subject: Reply with quote

Orion9 wrote:
Ну теперь сам бог велел добавить опцию включения (вывода на экран) только требуемых полей

Вот именно этого я и опасался... Smile Ладно, добавлю еще включение и пора на этом взять паузу. Очевидно, что include будет иметь приоритет над exclude и при его наличии все ключи exclude будут игнорироваться.
Orion9 wrote:
Ведь есть же еще сокращенный вывод, и ключик в нем тоже работает

Не очень понимаю, что за сокращенный вывод. Который с /E? Ну так это не отдельный вид, а тот же, только с дополнительной фильтрацией. Фактически все ключи (кроме, очевидно, /I), управляют одним режимом вывода.
Orion9 wrote:
Кстати, русское описание на ключ /E почему-то отсутствует.

Наверно не заметил. В отличие от собственно программирования написание справок вещь довольно долгая и муторная.
Orion9 wrote:
А еще утилиту хотелось бы видеть в:

Не думал об этом. Посмотрим, но понятно, что на своём сайте как-то удобнее.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 178

Post (Separately) Posted: Mon Mar 25, 2024 01:12    Post subject: Reply with quote

jentoso
Спасибо. Надо попробовать.
Сомнительно, правда, что многие пользуются таким продвинутым плугом. Просто зайти на сайт и проверить, что там нового, как-то удобнее. Я имею в виду wincmd.ru. Хотелось бы, конечно, чтобы он всегда был в актуальном состоянии относительно всего, что связано с Тоталом, но, видимо, так не получится.
Loopback wrote:
Вот именно этого я и опасался... Smile

Я сам этого опасался! Laughing Но ваш труд не будет напрасен. Вы только посмотрите, какая красота получается!

autorun.cfg
Code:
ControlSetMouseAction /L /K:C 3  ShowConsoleHint

Func ShowConsoleHint
Local f, p
   f = StrPart(ItemAtCursor('text'), auTAB, 1)
   p = SendMessage(RequestInfo(ItemAtCursor('panel') + 8), 13, 500, "" , 2)
   p = StrLeft(p, StrPos(p, "\", -1))
   f = p & f
   If Not FileExist(f) Then   
      MsgBox("Файл не существует " & f)
      Return
   Endif
   ShellExec /SW_HIDE /WAIT:5000 "%COMMANDER_PATH%\Plugins\uwdx\uwdx.bat" """%f%"""
EndFunc

uwdx.bat
Code:
CHCP 866

icacls %1 > "%TEMP%\uwdx1"
"%~dp0uwdx.exe" /C:866 /E /I /X:Obj_RealPath /X:Obj_RealSize NTLinks.wdx %1 >> "%TEMP%\uwdx1"
"%~dp0uwdx.exe" /C:866 /E /I /X:8 /X:9 NTFSFileStreams.wdx %1 >> "%TEMP%\uwdx1"
"%~dp0uwdx.exe" /C:866 /E /I FileX.wdx %1 >> "%TEMP%\uwdx1"

rem "%~dp0uwdx.exe" /E /I ShellDetails.wdx %1 >> "%TEMP%\uwdx1"

start "" "%COMMANDER_PATH%\Scripts\ahk\AutoHotkey32.exe" "%COMMANDER_PATH%\Scripts\ahk\uwdx.ahk" "%TEMP%\uwdx1"

uwdx.ahk
Code:
#SingleInstance Force

#Include ToolTipOptions.ahk

ToolTipOptions.Init()
ToolTipOptions.SetFont("s10", "Consolas")
ToolTipOptions.SetMargins(12, 12, 12, 12)
ToolTipOptions.SetTitle("Console Hint" , 1)
ToolTipOptions.SetColors("Black", "White")

ToolTip(FileRead(A_Args[1], "CP866"))

KeyWait "LButton", "D"

ToolTipOptions.ahk можно скачать отсюда:
https://www.autohotkey.com/boards/viewtopic.php?t=113308
И положить рядом с uwdx.ahk

Учитывая картину, нужно будет еще пару ключей добавить! Shocked Тут надо чуток подумать.

P.S.Просто я когда прочитал справу по ключу, ненароком подумал, что вы его только к режиму вывода всех полей, включая с пустыми значениями, добавили, а не в довес к /E. Но как быстро выяснилось, все норм.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 178

Post (Separately) Posted: Sun Apr 21, 2024 13:39    Post subject: Reply with quote

Loopback
Может, сделать утилите ключ, который задавал бы путь к текстовому файлу, содержащиму сразу несколько команд к исполнению, как это сделано, например, в nircmd с ключем script:
Quote:
script [Script File]
This command allows you to execute a sequence of commands stored inside the file specified in [Script File] parameter.
Example:
script "c:\temp\msg.ncl"
Example for a script:
infobox "Hello !" "This is the first message"
infobox "Hello !" "This is the second message"
infobox "Hello !" "This is the third message"

Это сократило бы число вызовов к uwdx.exe и позволило бы сразу объединить несколько блоков информации.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1290

Post (Separately) Posted: Sun Apr 21, 2024 14:23    Post subject: Reply with quote

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



Joined: 01 Jan 2024
Posts: 178

Post (Separately) Posted: Sun Apr 21, 2024 17:46    Post subject: Reply with quote

Quote:
сэкономить это сотню-другую миллисекунд на вызовы

Ну это еще замерить нужно! ) Особенно на слабых компах и загруженных процессорах. Если выигрыш составит 100-250 миллисекунд, то однозначно делать можно, тем более, как вы сами сказали, это не так сложно. Дэдлайнов тут никаких нет, а проект получит развитие Smile
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
Page 2 of 2

 
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