Autorun
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3 ... 129, 130, 131 ... 133, 134, 135  Next  :| |:
Total Commander -> Плагины Total Commander

#1936:  Author: Loopback PostPosted: Mon Mar 04, 2024 18:52
    —
Orion9
Код давний и недоделанный, тут много чего не хватает. В данный момент можно получить только одно значение.

Сложность в том, что фактически WMI запросы выдают двумерную таблицу значений. И если значения одной строки ещё как-то можно поместить в одну переменную (через заданный разделитель), то со второй и последующими строками уже сложнее. В общем, как-то эту функцию доработать давно висит в Todo, но когда до этого руки дойдут непонятно.

#1937:  Author: Orion9 PostPosted: Wed Mar 06, 2024 01:08
    —
Loopback
Понятно. Хотелось бы, конечно, вытягивать сразу несколько полей за раз - иногда это крайне необходимо - но, в принципе, функционала Autorun и сейчас хватает, чтобы найти обходные пути. Например, можно использовать ProcessExecGetOutput со скриптом, выводящим результат в stdout. Немного плясок, конечно, при этом, но главное результат Smile

#1938:  Author: Orion9 PostPosted: Wed Mar 06, 2024 14:30
    —
Loopback
Какие-то проблемы с функцией FileExist. Простой вызов FileExist("%COMMANDER_PATH%\NoClose.exe") возвращает 0.

Ошибка?

Версия 2.2.10.0

#1939:  Author: Loopback PostPosted: Wed Mar 06, 2024 22:41
    —
Orion9
В принципе, при функциональной записи для переменных предполагается использовать конкатенацию:

Code:
FileExist(%COMMANDER_PATH% & "\NoClose.exe")


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

#1940:  Author: Orion9 PostPosted: Thu Mar 07, 2024 01:15
    —
Loopback
Code:
FileExist(%COMMANDER_PATH% & "\NoClose.exe")

Работает.

Но что делать с:
Code:

file = "%COMMANDER_PATH%\NOCLOSE.EXE"

FileExist(file) - возвращает 0

MsgBox(file) - правильное имя файла

Как лучше раскрыть, и можно ли?

#1941:  Author: Loopback PostPosted: Thu Mar 07, 2024 12:22
    —
Orion9 wrote:
Но что делать с:


Точно так же:

Code:

file = %COMMANDER_PATH% & "\NOCLOSE.EXE"


В переменной file будет раскрытый путь.

#1942:  Author: Orion9 PostPosted: Thu Mar 07, 2024 13:09
    —
Loopback
Да, работает. Немного путано, конечно, но теперь буду иметь в виду. Спасибо Smile

#1943:  Author: Loopback PostPosted: Thu Mar 07, 2024 13:26
    —
Orion9 wrote:
Немного путано, конечно

Что есть, то есть, издержки совместимости. В справке есть раздел "Виды синтаксиса", там разъяснены причины появления и особенности двух видов записей.

#1944:  Author: Orion9 PostPosted: Fri Mar 08, 2024 13:02
    —
Прочитал, наконец, всю справку (за исключением ModifyDialogs - пропустил пока). Давно надо было это сделать. Просто всегда хочется быстрого результата, а к справке, как правило, обращаешься по мере необходимости. Но надо отметить, что справочник у Autorun что надо. Читается легко и на одном дыхании. Все оформлено просто здорово и с умением. Спасибо вам и Flasher за большой проделанный труд.
Если какой-то недостаток и есть, то, может быть, иногда местами не достаточно примеров, а порой они совсем отсутствуют. При этом лишними они точно не были, поскольку примеры нагдядно демонстрируют возможности и закрепляют теорию.

Возник один вопрос. Если в файле конфигурации есть секция Pragma AutorunFinalizeSection с завершающими командами, то что будет если подключить файл через Pragma Include <filename>, в котором тоже будет эта директива?

#1945:  Author: Loopback PostPosted: Fri Mar 08, 2024 20:11
    —
Orion9 wrote:
Спасибо вам и Flasher за большой проделанный труд.

Спасибо!
Orion9 wrote:
местами не достаточно примеров, а порой они совсем отсутствуют

Да, наверно. К некоторым простым функциям не делались, казалось, что и так понятно. К некоторым просто из-за нехватки времени. Если на примете есть функции, к которым пример просто напрашивается - пишите, добавлю.
Orion9 wrote:
Если в файле конфигурации есть секция Pragma AutorunFinalizeSection с завершающими командами, то что будет если подключить файл через Pragma Include <filename>, в котором тоже будет эта директива?

Думаю, ничего хорошего Smile Препроцессор фактически собирает дополнительные файлы в один. Если эта директива расположена в нескольких файлах, то весь текст, который окажется после первой встреченной директивы, будет в секции финализации. Расположение директив сейчас не проверяется, возможно, стоит сделать такую защиту для AutorunFinalizeSection.

#1946:  Author: Orion9 PostPosted: Sat Mar 09, 2024 14:05
    —
Quote:
Если на примете есть функции, к которым пример просто напрашивается - пишите, добавлю

Да практически ко всем нужны, и чем больше - тем лучше Smile На живых примерах учишься и перенимаешь опыт. Параллельно этому верифицируется логика работы всего остального функционала и закрепляеются ранее полученные значения. Взять хотя бы пример с FileExist. Если сейчас открыть справку по этой функций, то можно увидеть всего один пример - If FileExist("C:\Program Files (x86)") Then. В других местах справки есть и другие примеры с этой функцией, но важно, чтобы все они были в одном месте и демонстрировали основные/ключевые способы вызова, т.е., как вы и писали выше: FileExist(%COMMANDER_PATH% & "\NoClose.exe") или file = %COMMANDER_PATH% & "\NOCLOSE.EXE", FileExist(file)

То же самое можно сказать и о упомянутой чуть ранее функций ProcessExecGetOutput. Есть пример в autorun.example.cfg, но в справке примеров нет. А ведь так можно и не заметить сразу, что со мной произошло.

Еще один пример. Мне понадобилось записать в ini ключ с двумя переменными формата "%COMMANDER_PATH%" & %vbsp%, чтобы в в ini была запись типа "%COMMANDER_PATH%\Scripts\vbs\". Пришлось обратиться к другим разделам справки, чтобы понять, что сначала нужно создать переменную с ключом /EV-, типа: Set /EV- Var "%COMMANDER_PATH%", а потом уж оъединять (Var = Var & %vbsp%) и писать в ini через %Var%. А ведь было бы хорошо, если в справке к функции IniWrite сразу был подобный пример.

В общем, примеров нужно больше. Как, например, у функции ControlSetMouseAction. Это еще больше популяризирует плагин даже среди людей далеких от программирования (или, по крайней мере, поможет им лучше разобраться при желании).
Quote:
Думаю, ничего хорошего Smile

Лучше не скажешь Laughing Видимо, защита все-таки нужна.

У меня тут другая проблема. Простая директива Pragma Include example.aucfg не работает. Пишет "Не найден подключаемый файл: example.aucfg". Файл лежит в каталоге. Пробовал по-разному, помещал в подкаталог, кавычки и прочее. Не работает. Только указание абсолютного пути срабатывает. Что это может быть? И жаль в справке опять нет примера Laughing

#1947:  Author: Loopback PostPosted: Sat Mar 09, 2024 22:41
    —
Orion9 wrote:
В общем, примеров нужно больше.

Примеры, где их много (ControlSetMouseAction, команды плагина ModifyDialog) в основном делал Flasher, поскольку он был весьма вовлечен в эту тему. Просто так такое количество сделать непросто, поскольку желательно чтобы примеры не были абстрактными и демонстрировали что-то полезное. Но тем не менее постараюсь к релизу (надеюсь, он когда-нибудь все же состоится Smile ) дополнить недостающие примеры.

Orion9 wrote:
Простая директива Pragma Include example.aucfg не работает. Пишет "Не найден подключаемый файл: example.aucfg".

Весьма странно, попробовал такой простейший вариант, example.aucfg рядом с основной конфигурацией - находит.

#1948:  Author: Orion9 PostPosted: Sun Mar 10, 2024 19:47
    —
Loopback
Quote:
Просто так такое количество сделать непросто, поскольку желательно чтобы примеры не были абстрактными и демонстрировали что-то полезное

Пусть это не станет для вас обузой, ведь вы и так уже много сделали! По сути, выполнили всю работу за Гислера по созданию встроенного скриптового языка в TC Laughing
Но если вы хотите расширить границы и сделать плагин чуть более доступным, то тогда да - большее количество примеров в справке совсем не помешает.
Когда видишь пример в справке, это говорит о том, что автор гарантирует его работу. Если пример взятый из справки не работает, то причину прежде всего ищешь в ошибке софта или каком-то баге, а не в том, что ты делаешь что-то неправильно. И наоборот: если в справке нет примера, а есть только схема (теоретическое описание), и если возникают проблемы с применением этой схемы, то причину ищешь прежде всего в себе, и тут начинаются пляски с различными комбинациями, вариантами и прочими производными, пока лимит идей и сил не иссякнет, и уж только потом начинаешь думать о недочетах в самой программе.
Вывод: примеры таки нужны, даже если все кажется простым и очевидным.
Quote:

Весьма странно, попробовал такой простейший вариант, example.aucfg рядом с основной конфигурацией - находит.

Проверял на 8.1/10/11 - везде то же самое. Эксперементальным путем установил, что за начало относительного пути берется корень TC. Если положить туда example.aucfg, то все начинает работать. Аналогично, если файл лежит, скажем, в %COMMANDER_PATH%\Ini\, то запись Pragma Include ini\example.aucfg - тоже рабочая, как и Pragma Include %COMMANDER_PATH%\Ini\example.aucfg

Даже не знаю, в чем может быть проблема. Кстати, проверял даже на чистом ТС всего с одним установленным плагином Autorun.

#1949:  Author: Loopback PostPosted: Mon Mar 11, 2024 13:55
    —
Orion9
Оставил эту конструкцию в рабочем конфиге и в какой-то момент все же словил ошибку. Надеюсь, смогу повторить, когда дело дойдет до исправления.

В любом случае, то что "за начало относительного пути берется корень TC" - неправильное поведение, корень для допфайлов должен быть каталог плагина.

#1950:  Author: Orion9 PostPosted: Tue Mar 12, 2024 14:29
    —
Loopback
Остановился пока на варианте с %COMMANDER_PATH%. Так, вроде, работает и не вызывает никаких опасений. Совсем не жалею, что потратил столько времени на Autorun - в итоге получил больше, чем хотел и мог расчитывать. Даже не думал, что этот инструмент настолько мощен и полезен, особенно в последней своей версии. С интересом буду ждать, что вы еще в него добавите, если, конечно, будут новые релизы. Тут я советчик плохой. Но, пожалуй, чего мне не хватило - MsgBox с вариантами ответов и функции вызова всплывающей подсказки, типа ToolTip. Может, у вас когда и доберутся руки до этого Smile



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


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

Goto page Previous  1, 2, 3 ... 129, 130, 131 ... 133, 134, 135  Next  :| |:
Page 130 of 135

Powered by phpBB © 2001, 2005 phpBB Group