Утилита для работы с плагинами WDX из командной строки
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2  :| |:
Total Commander -> Плагины Total Commander

#16:  Author: Orion9 PostPosted: Sat Mar 23, 2024 20:42
    —
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

#17:  Author: Loopback PostPosted: Sun Mar 24, 2024 15:02
    —
Orion9 wrote:
Например, взять все непустое и нужное из Ntlinks, Ntfsfilestreams, Filex и т.п. и сразу выводить альтернативную подсказку к файлу. Да и обрабатывать компакный блок будет легче в других скриптах и батниках.

Ок, убедили. Обновил версию, добавлен переключатель /X. Чтобы не усложнять синтаксис, переключатель добавляет в исключения только одно поле, но этих переключателей может быть несколько.

#18:  Author: Orion9 PostPosted: Sun Mar 24, 2024 18:52
    —
Loopback
Круто получилось. Проверил и по индексу, и с комбинированием по имени - все работает!

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

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

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

А еще утилиту хотелось бы видеть в:
https://wincmd.ru/directory/util.html
Я только недавно узнал, что авторы сами берут на себя обязанность выкладывать на wincmd.ru, а ведь так можно много чего интересного пропустить, включая последнии версии.

#19:  Author: jentoso PostPosted: Sun Mar 24, 2024 20:01
    —
Orion9
Можно через плагин Versions настроить отслеживание новых версий плагинов, программ, на любом сайте где они чаще обновляются и обитают.

#20:  Author: Loopback PostPosted: Sun Mar 24, 2024 22:30
    —
Orion9 wrote:
Ну теперь сам бог велел добавить опцию включения (вывода на экран) только требуемых полей

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

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

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

Не думал об этом. Посмотрим, но понятно, что на своём сайте как-то удобнее.

#21:  Author: Orion9 PostPosted: Mon Mar 25, 2024 01:12
    —
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. Но как быстро выяснилось, все норм.

#22:  Author: Orion9 PostPosted: Sun Apr 21, 2024 13:39
    —
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 и позволило бы сразу объединить несколько блоков информации.

#23:  Author: Loopback PostPosted: Sun Apr 21, 2024 14:23
    —
Orion9
Не знаю даже. Не то чтобы это очень сложно, но выглядит как-то... избыточно, что ли. Единственное, что тут можно сэкономить это сотню-другую миллисекунд на вызовы. Какого-то упрощения не вижу.

#24:  Author: Orion9 PostPosted: Sun Apr 21, 2024 17:46
    —
Quote:
сэкономить это сотню-другую миллисекунд на вызовы

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



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2  :| |:
Page 2 of 2

Powered by phpBB © 2001, 2005 phpBB Group