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 

Autorun
Goto page Previous  1, 2, 3 ... 129, 130, 131 ... 133, 134, 135  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Mon Mar 04, 2024 18:52    Post subject: Reply with quote

Orion9
Код давний и недоделанный, тут много чего не хватает. В данный момент можно получить только одно значение.

Сложность в том, что фактически WMI запросы выдают двумерную таблицу значений. И если значения одной строки ещё как-то можно поместить в одну переменную (через заданный разделитель), то со второй и последующими строками уже сложнее. В общем, как-то эту функцию доработать давно висит в Todo, но когда до этого руки дойдут непонятно.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Wed Mar 06, 2024 01:08    Post subject: Reply with quote

Loopback
Понятно. Хотелось бы, конечно, вытягивать сразу несколько полей за раз - иногда это крайне необходимо - но, в принципе, функционала Autorun и сейчас хватает, чтобы найти обходные пути. Например, можно использовать ProcessExecGetOutput со скриптом, выводящим результат в stdout. Немного плясок, конечно, при этом, но главное результат Smile
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Wed Mar 06, 2024 14:30    Post subject: Reply with quote

Loopback
Какие-то проблемы с функцией FileExist. Простой вызов FileExist("%COMMANDER_PATH%\NoClose.exe") возвращает 0.

Ошибка?

Версия 2.2.10.0
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Wed Mar 06, 2024 22:41    Post subject: Reply with quote

Orion9
В принципе, при функциональной записи для переменных предполагается использовать конкатенацию:

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


Так работать точно будет. Однако в описании функции заявлено, что переменные в путях должны разворачиваться по умолчанию. Такое соглашение было принято в ранних версиях плагина для многих команд. С точки зрения совместимости переменная внутри строки здесь тоже должна работать. Так что это баг.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Thu Mar 07, 2024 01:15    Post subject: Reply with quote

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

Работает.

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

file = "%COMMANDER_PATH%\NOCLOSE.EXE"

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

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

Как лучше раскрыть, и можно ли?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Thu Mar 07, 2024 12:22    Post subject: Reply with quote

Orion9 wrote:
Но что делать с:


Точно так же:

Code:

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


В переменной file будет раскрытый путь.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Thu Mar 07, 2024 13:09    Post subject: Reply with quote

Loopback
Да, работает. Немного путано, конечно, но теперь буду иметь в виду. Спасибо Smile
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Thu Mar 07, 2024 13:26    Post subject: Reply with quote

Orion9 wrote:
Немного путано, конечно

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



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Fri Mar 08, 2024 13:02    Post subject: Reply with quote

Прочитал, наконец, всю справку (за исключением ModifyDialogs - пропустил пока). Давно надо было это сделать. Просто всегда хочется быстрого результата, а к справке, как правило, обращаешься по мере необходимости. Но надо отметить, что справочник у Autorun что надо. Читается легко и на одном дыхании. Все оформлено просто здорово и с умением. Спасибо вам и Flasher за большой проделанный труд.
Если какой-то недостаток и есть, то, может быть, иногда местами не достаточно примеров, а порой они совсем отсутствуют. При этом лишними они точно не были, поскольку примеры нагдядно демонстрируют возможности и закрепляют теорию.

Возник один вопрос. Если в файле конфигурации есть секция Pragma AutorunFinalizeSection с завершающими командами, то что будет если подключить файл через Pragma Include <filename>, в котором тоже будет эта директива?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Fri Mar 08, 2024 20:11    Post subject: Reply with quote

Orion9 wrote:
Спасибо вам и Flasher за большой проделанный труд.

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

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

Думаю, ничего хорошего Smile Препроцессор фактически собирает дополнительные файлы в один. Если эта директива расположена в нескольких файлах, то весь текст, который окажется после первой встреченной директивы, будет в секции финализации. Расположение директив сейчас не проверяется, возможно, стоит сделать такую защиту для AutorunFinalizeSection.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Sat Mar 09, 2024 14:05    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Sat Mar 09, 2024 22:41    Post subject: Reply with quote

Orion9 wrote:
В общем, примеров нужно больше.

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

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

Весьма странно, попробовал такой простейший вариант, example.aucfg рядом с основной конфигурацией - находит.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Sun Mar 10, 2024 19:47    Post subject: Reply with quote

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.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Mon Mar 11, 2024 13:55    Post subject: Reply with quote

Orion9
Оставил эту конструкцию в рабочем конфиге и в какой-то момент все же словил ошибку. Надеюсь, смогу повторить, когда дело дойдет до исправления.

В любом случае, то что "за начало относительного пути берется корень TC" - неправильное поведение, корень для допфайлов должен быть каталог плагина.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 180

Post (Separately) Posted: Tue Mar 12, 2024 14:29    Post subject: Reply with quote

Loopback
Остановился пока на варианте с %COMMANDER_PATH%. Так, вроде, работает и не вызывает никаких опасений. Совсем не жалею, что потратил столько времени на Autorun - в итоге получил больше, чем хотел и мог расчитывать. Даже не думал, что этот инструмент настолько мощен и полезен, особенно в последней своей версии. С интересом буду ждать, что вы еще в него добавите, если, конечно, будут новые релизы. Тут я советчик плохой. Но, пожалуй, чего мне не хватило - MsgBox с вариантами ответов и функции вызова всплывающей подсказки, типа ToolTip. Может, у вас когда и доберутся руки до этого 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, 3 ... 129, 130, 131 ... 133, 134, 135  Next
Page 130 of 135

 
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