View previous topic :: View next topic |
Author |
Message |
Orion9
Joined: 01 Jan 2024 Posts: 182
|
(Separately) Posted: Sat Mar 23, 2024 20:42 Post subject: |
|
|
Loopback wrote: | Добавить-то наверно можно, но не слишком ли много опций для одного режима вывода? Опять же, есть поля, а есть еще единицы... |
Да норм будет. Юниты, конечно, не нужны, а вот поля некоторые неплохо было бы исключить при выводе. По сути, на выходе получится компакный блок, который можно будет объединять с другими компактными блоками и пускать сразу в хинт. Например, взять все непустое и нужное из Ntlinks, Ntfsfilestreams, Filex и т.п. и сразу выводить альтернативную подсказку к файлу. Да и обрабатывать компакный блок будет легче в других скриптах и батниках.
А теперь некое удобство от благодарного пользователя!
Скрипт на 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 - одно удовольствие |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Sun Mar 24, 2024 15:02 Post subject: |
|
|
Orion9 wrote: | Например, взять все непустое и нужное из Ntlinks, Ntfsfilestreams, Filex и т.п. и сразу выводить альтернативную подсказку к файлу. Да и обрабатывать компакный блок будет легче в других скриптах и батниках. |
Ок, убедили. Обновил версию, добавлен переключатель /X. Чтобы не усложнять синтаксис, переключатель добавляет в исключения только одно поле, но этих переключателей может быть несколько. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 182
|
(Separately) Posted: Sun Mar 24, 2024 18:52 Post subject: |
|
|
Loopback
Круто получилось. Проверил и по индексу, и с комбинированием по имени - все работает!
Ну теперь сам бог велел добавить опцию включения (вывода на экран) только требуемых полей Сейчас утилита получает значение одного поля и выводит его в консоль - это, безусловно, можно (и даже нужно) оставить как есть.
Один момент. В справке как-то неоднозначно звучит:
Quote: | /X:field - Опционально. Добавляет имя или индекс поля плагина, которое будет исключено в режиме вывода всех полей. Этот переключатель может использоваться многократно. Имена с пробелами необходимо взять в кавычки. |
Ведь есть же еще сокращенный вывод, и ключик в нем тоже работает. Кстати, русское описание на ключ /E почему-то отсутствует.
А еще утилиту хотелось бы видеть в:
https://wincmd.ru/directory/util.html
Я только недавно узнал, что авторы сами берут на себя обязанность выкладывать на wincmd.ru, а ведь так можно много чего интересного пропустить, включая последнии версии. |
|
Back to top |
|
|
jentoso
Joined: 20 Dec 2007 Posts: 351
|
(Separately) Posted: Sun Mar 24, 2024 20:01 Post subject: |
|
|
Orion9
Можно через плагин Versions настроить отслеживание новых версий плагинов, программ, на любом сайте где они чаще обновляются и обитают. _________________ TC 11.03 combo, Windows 10 x64 |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Sun Mar 24, 2024 22:30 Post subject: |
|
|
Orion9 wrote: | Ну теперь сам бог велел добавить опцию включения (вывода на экран) только требуемых полей |
Вот именно этого я и опасался... Ладно, добавлю еще включение и пора на этом взять паузу. Очевидно, что include будет иметь приоритет над exclude и при его наличии все ключи exclude будут игнорироваться.
Orion9 wrote: | Ведь есть же еще сокращенный вывод, и ключик в нем тоже работает |
Не очень понимаю, что за сокращенный вывод. Который с /E? Ну так это не отдельный вид, а тот же, только с дополнительной фильтрацией. Фактически все ключи (кроме, очевидно, /I), управляют одним режимом вывода.
Orion9 wrote: | Кстати, русское описание на ключ /E почему-то отсутствует. |
Наверно не заметил. В отличие от собственно программирования написание справок вещь довольно долгая и муторная.
Orion9 wrote: | А еще утилиту хотелось бы видеть в: |
Не думал об этом. Посмотрим, но понятно, что на своём сайте как-то удобнее. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 182
|
(Separately) Posted: Mon Mar 25, 2024 01:12 Post subject: |
|
|
jentoso
Спасибо. Надо попробовать.
Сомнительно, правда, что многие пользуются таким продвинутым плугом. Просто зайти на сайт и проверить, что там нового, как-то удобнее. Я имею в виду wincmd.ru. Хотелось бы, конечно, чтобы он всегда был в актуальном состоянии относительно всего, что связано с Тоталом, но, видимо, так не получится.
Loopback wrote: | Вот именно этого я и опасался... |
Я сам этого опасался! Но ваш труд не будет напрасен. Вы только посмотрите, какая красота получается!
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
Учитывая картину, нужно будет еще пару ключей добавить! Тут надо чуток подумать.
P.S.Просто я когда прочитал справу по ключу, ненароком подумал, что вы его только к режиму вывода всех полей, включая с пустыми значениями, добавили, а не в довес к /E. Но как быстро выяснилось, все норм.
|
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 182
|
(Separately) Posted: Sun Apr 21, 2024 13:39 Post subject: |
|
|
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 |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Sun Apr 21, 2024 14:23 Post subject: |
|
|
Orion9
Не знаю даже. Не то чтобы это очень сложно, но выглядит как-то... избыточно, что ли. Единственное, что тут можно сэкономить это сотню-другую миллисекунд на вызовы. Какого-то упрощения не вижу. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 182
|
(Separately) Posted: Sun Apr 21, 2024 17:46 Post subject: |
|
|
Quote: | сэкономить это сотню-другую миллисекунд на вызовы |
Ну это еще замерить нужно! ) Особенно на слабых компах и загруженных процессорах. Если выигрыш составит 100-250 миллисекунд, то однозначно делать можно, тем более, как вы сами сказали, это не так сложно. Дэдлайнов тут никаких нет, а проект получит развитие |
|
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
|