Autorun
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Orion9
Код давний и недоделанный, тут много чего не хватает. В данный момент можно получить только одно значение.
Сложность в том, что фактически WMI запросы выдают двумерную таблицу значений. И если значения одной строки ещё как-то можно поместить в одну переменную (через заданный разделитель), то со второй и последующими строками уже сложнее. В общем, как-то эту функцию доработать давно висит в Todo, но когда до этого руки дойдут непонятно.
Код давний и недоделанный, тут много чего не хватает. В данный момент можно получить только одно значение.
Сложность в том, что фактически WMI запросы выдают двумерную таблицу значений. И если значения одной строки ещё как-то можно поместить в одну переменную (через заданный разделитель), то со второй и последующими строками уже сложнее. В общем, как-то эту функцию доработать давно висит в Todo, но когда до этого руки дойдут непонятно.
Loopback
Понятно. Хотелось бы, конечно, вытягивать сразу несколько полей за раз - иногда это крайне необходимо - но, в принципе, функционала Autorun и сейчас хватает, чтобы найти обходные пути. Например, можно использовать ProcessExecGetOutput со скриптом, выводящим результат в stdout. Немного плясок, конечно, при этом, но главное результат
Понятно. Хотелось бы, конечно, вытягивать сразу несколько полей за раз - иногда это крайне необходимо - но, в принципе, функционала Autorun и сейчас хватает, чтобы найти обходные пути. Например, можно использовать ProcessExecGetOutput со скриптом, выводящим результат в stdout. Немного плясок, конечно, при этом, но главное результат
Orion9
В принципе, при функциональной записи для переменных предполагается использовать конкатенацию:
Так работать точно будет. Однако в описании функции заявлено, что переменные в путях должны разворачиваться по умолчанию. Такое соглашение было принято в ранних версиях плагина для многих команд. С точки зрения совместимости переменная внутри строки здесь тоже должна работать. Так что это баг.
В принципе, при функциональной записи для переменных предполагается использовать конкатенацию:
Код: Выделить всё
FileExist(%COMMANDER_PATH% & "\NoClose.exe") Loopback
Работает.
Но что делать с:
Как лучше раскрыть, и можно ли?
Код: Выделить всё
FileExist(%COMMANDER_PATH% & "\NoClose.exe")Но что делать с:
Код: Выделить всё
file = "%COMMANDER_PATH%\NOCLOSE.EXE"
FileExist(file) - возвращает 0
MsgBox(file) - правильное имя файлаТочно так же:Orion9 писал(а):Но что делать с:
Код: Выделить всё
file = %COMMANDER_PATH% & "\NOCLOSE.EXE"
Прочитал, наконец, всю справку (за исключением ModifyDialogs - пропустил пока). Давно надо было это сделать. Просто всегда хочется быстрого результата, а к справке, как правило, обращаешься по мере необходимости. Но надо отметить, что справочник у Autorun что надо. Читается легко и на одном дыхании. Все оформлено просто здорово и с умением. Спасибо вам и Flasher за большой проделанный труд.
Если какой-то недостаток и есть, то, может быть, иногда местами не достаточно примеров, а порой они совсем отсутствуют. При этом лишними они точно не были, поскольку примеры нагдядно демонстрируют возможности и закрепляют теорию.
Возник один вопрос. Если в файле конфигурации есть секция Pragma AutorunFinalizeSection с завершающими командами, то что будет если подключить файл через Pragma Include <filename>, в котором тоже будет эта директива?
Если какой-то недостаток и есть, то, может быть, иногда местами не достаточно примеров, а порой они совсем отсутствуют. При этом лишними они точно не были, поскольку примеры нагдядно демонстрируют возможности и закрепляют теорию.
Возник один вопрос. Если в файле конфигурации есть секция Pragma AutorunFinalizeSection с завершающими командами, то что будет если подключить файл через Pragma Include <filename>, в котором тоже будет эта директива?
Спасибо!Orion9 писал(а):Спасибо вам и Flasher за большой проделанный труд.
Да, наверно. К некоторым простым функциям не делались, казалось, что и так понятно. К некоторым просто из-за нехватки времени. Если на примете есть функции, к которым пример просто напрашивается - пишите, добавлю.Orion9 писал(а):местами не достаточно примеров, а порой они совсем отсутствуют
Думаю, ничего хорошегоOrion9 писал(а):Если в файле конфигурации есть секция Pragma AutorunFinalizeSection с завершающими командами, то что будет если подключить файл через Pragma Include <filename>, в котором тоже будет эта директива?
Да практически ко всем нужны, и чем больше - тем лучшеЕсли на примете есть функции, к которым пример просто напрашивается - пишите, добавлю
То же самое можно сказать и о упомянутой чуть ранее функций 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. Это еще больше популяризирует плагин даже среди людей далеких от программирования (или, по крайней мере, поможет им лучше разобраться при желании).
Лучше не скажешьДумаю, ничего хорошего
У меня тут другая проблема. Простая директива Pragma Include example.aucfg не работает. Пишет "Не найден подключаемый файл: example.aucfg". Файл лежит в каталоге. Пробовал по-разному, помещал в подкаталог, кавычки и прочее. Не работает. Только указание абсолютного пути срабатывает. Что это может быть? И жаль в справке опять нет примера
Примеры, где их много (ControlSetMouseAction, команды плагина ModifyDialog) в основном делал Flasher, поскольку он был весьма вовлечен в эту тему. Просто так такое количество сделать непросто, поскольку желательно чтобы примеры не были абстрактными и демонстрировали что-то полезное. Но тем не менее постараюсь к релизу (надеюсь, он когда-нибудь все же состоитсяOrion9 писал(а):В общем, примеров нужно больше.
Весьма странно, попробовал такой простейший вариант, example.aucfg рядом с основной конфигурацией - находит.Orion9 писал(а):Простая директива Pragma Include example.aucfg не работает. Пишет "Не найден подключаемый файл: example.aucfg".
Loopback

Но если вы хотите расширить границы и сделать плагин чуть более доступным, то тогда да - большее количество примеров в справке совсем не помешает.
Когда видишь пример в справке, это говорит о том, что автор гарантирует его работу. Если пример взятый из справки не работает, то причину прежде всего ищешь в ошибке софта или каком-то баге, а не в том, что ты делаешь что-то неправильно. И наоборот: если в справке нет примера, а есть только схема (теоретическое описание), и если возникают проблемы с применением этой схемы, то причину ищешь прежде всего в себе, и тут начинаются пляски с различными комбинациями, вариантами и прочими производными, пока лимит идей и сил не иссякнет, и уж только потом начинаешь думать о недочетах в самой программе.
Вывод: примеры таки нужны, даже если все кажется простым и очевидным.
Даже не знаю, в чем может быть проблема. Кстати, проверял даже на чистом ТС всего с одним установленным плагином Autorun.
Пусть это не станет для вас обузой, ведь вы и так уже много сделали! По сути, выполнили всю работу за Гислера по созданию встроенного скриптового языка в TCПросто так такое количество сделать непросто, поскольку желательно чтобы примеры не были абстрактными и демонстрировали что-то полезное
Но если вы хотите расширить границы и сделать плагин чуть более доступным, то тогда да - большее количество примеров в справке совсем не помешает.
Когда видишь пример в справке, это говорит о том, что автор гарантирует его работу. Если пример взятый из справки не работает, то причину прежде всего ищешь в ошибке софта или каком-то баге, а не в том, что ты делаешь что-то неправильно. И наоборот: если в справке нет примера, а есть только схема (теоретическое описание), и если возникают проблемы с применением этой схемы, то причину ищешь прежде всего в себе, и тут начинаются пляски с различными комбинациями, вариантами и прочими производными, пока лимит идей и сил не иссякнет, и уж только потом начинаешь думать о недочетах в самой программе.
Вывод: примеры таки нужны, даже если все кажется простым и очевидным.
Проверял на 8.1/10/11 - везде то же самое. Эксперементальным путем установил, что за начало относительного пути берется корень TC. Если положить туда example.aucfg, то все начинает работать. Аналогично, если файл лежит, скажем, в %COMMANDER_PATH%\Ini\, то запись Pragma Include ini\example.aucfg - тоже рабочая, как и Pragma Include %COMMANDER_PATH%\Ini\example.aucfgВесьма странно, попробовал такой простейший вариант, example.aucfg рядом с основной конфигурацией - находит.
Даже не знаю, в чем может быть проблема. Кстати, проверял даже на чистом ТС всего с одним установленным плагином Autorun.
Loopback
Остановился пока на варианте с %COMMANDER_PATH%. Так, вроде, работает и не вызывает никаких опасений. Совсем не жалею, что потратил столько времени на Autorun - в итоге получил больше, чем хотел и мог расчитывать. Даже не думал, что этот инструмент настолько мощен и полезен, особенно в последней своей версии. С интересом буду ждать, что вы еще в него добавите, если, конечно, будут новые релизы. Тут я советчик плохой. Но, пожалуй, чего мне не хватило - MsgBox с вариантами ответов и функции вызова всплывающей подсказки, типа ToolTip. Может, у вас когда и доберутся руки до этого
Остановился пока на варианте с %COMMANDER_PATH%. Так, вроде, работает и не вызывает никаких опасений. Совсем не жалею, что потратил столько времени на Autorun - в итоге получил больше, чем хотел и мог расчитывать. Даже не думал, что этот инструмент настолько мощен и полезен, особенно в последней своей версии. С интересом буду ждать, что вы еще в него добавите, если, конечно, будут новые релизы. Тут я советчик плохой. Но, пожалуй, чего мне не хватило - MsgBox с вариантами ответов и функции вызова всплывающей подсказки, типа ToolTip. Может, у вас когда и доберутся руки до этого