Autorun

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Выложил версию с поправленным плагином sysinfo, должна работать как та версия от 7 ноября.

По-поводу скорости, если интересно, выложил версию, в которой препроцессинг выполняется после проверки наличия /S= в комстроке, т.е. при запуске процесса поиска препроцессинг не производится. Также при запуске основного процесса показывается время выполнения препроцессинга.

При тестировании я никакой разницы не заметил. После этого поставил счетчик, на моей системе и скрипте чуть больше 100 строк время препроцессинга занимает в среднем 0,09 мс. Такую задержку визуально заметить невозможно. На медленных системах и более длинных скриптах время может быть больше, но вряд ли выйдет за десяток миллисекунд.

AutorunFinalizeSection никак не влияет, все директивы обрабатываются на этапе препроцессинга.
Аватара пользователя
BeTeP
Сообщения: 135
Зарегистрирован: Чт мар 31, 2005 00:57
Откуда: Санкт-Петербург

Сообщение BeTeP »

Loopback писал(а):Думаю да, я так понимаю, интересен режим MOVE_LEGACY? Поскольку MOVE_RIGHT делал то, что сейчас в тотале по-умолчанию.
Я в этих режимах не очень разбираюсь. Изображение
Меня интересует перемещение кнопки в место, где она была до версии 7.50.
«The Truth Is Out There»
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

BeTeP
Да, это MOVE_LEGACY. Хорошо, поправлю, но наверно не сразу сейчас, там надо кое-что переделать.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback
Докладываю. SysInfo работает. GetWMIValue работает без кавычек для имени параметра.

Тестовую версию опробовал и визуально разницу уловить с предыдущей версией не смог. А время при запуске ТС по сути ничего не даёт (у меня 0,4 мс), т. к. не с чем сравнивать. По идее время нужно сверять у 2-х версий при вызове из запущенного ТС. Впрочем, я установил Autorun на чистый ТС и особой разницы со скоростью до установки не заметил, а значит, на скорость в моей сборке влияют другие плагины.

Ещё пару моментов.
1)

Код: Выделить всё

ShellExec /SW_HIDE /W:1 /T "%COMMANDER_PATH%\Utils\Everything\Everything.exe"
Почему-то окно Everything не скрывается. Как будто сама программа блокирует скрытие. Нельзя её как-то принудить? С минимизацией, например, проблем нет.
Причём такое поведение было не всегда. Закономерности по версиям и т. п. не выявил.

2) Ранее поднимался вопрос раскрытия пустых переменных среды в рамках одного пути в командах (прежде всего ShellExec и Process...). Пример:

Код: Выделить всё

SetEnv EMPTY
ShellExec %SYSTEMROOT%\SYSTEM32\notepad%EMPTY%.exe
Такая команда не выполнится. А хотелось бы. В рамках ТС этот момент Гислер по нашей инициативе исправил.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Ну и хорошо.

По скорости, конечно можно и эту миллисекунду срезать, если совсем убрать проверку директивы, но не думаю, что при таких значениях есть смысл.
Flasher писал(а):Нельзя её как-то принудить?
Параметр скрытия задается в системной функции запуска программы. Если запускаемая программа на него не отреагировала, значит в ней есть какой-то блокирующий механизм. Никакого дополнительного принуждения не предусмотрено. Наверно, в этом случае только пытаться скрыть после запуска, если она вообще это позволит.
Flasher писал(а):А хотелось бы.
Мне тоже :) Это действительно было неудобно.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):но не думаю, что при таких значениях есть смысл.
Видимо, нет.
Loopback писал(а):Наверно, в этом случае только пытаться скрыть после запуска, если она вообще это позволит.
Флаг снимается из разных программ управления окнами.
Loopback писал(а):Мне тоже :) Это действительно было неудобно.
Эмм. В смысле "было"? Я прошу это исправить. :roll:
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):Флаг снимается из разных программ управления окнами.
Значит только прятать после запуска. Но эта задача уже явно за пределами ShellExecute. Это надо искать окно запущенной программы и посылать ему сообщение. В принципе на Autoit должно решаться просто.
Flasher писал(а):Эмм. В смысле "было"? Я прошу это исправить.
Я это и имел в виду. Раз это теперь работает в тотале, нужно чтобы работало и здесь. Буду смотреть.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):В принципе на Autoit должно решаться просто.
Ага. Или на AHK.
Loopback писал(а):Раз это теперь работает в тотале, нужно чтобы работало и здесь.
Отлично. Ждём'с.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
enginigger
Сообщения: 44
Зарегистрирован: Сб дек 18, 2010 12:27

Сообщение enginigger »

Loopback

Код: Выделить всё

ShellExec /SW_HIDE /W:1 /T "%COMMANDER_PATH%\Utils\Everything\Everything.exe"
у Everything есть параметр комстроки -startup, при котором он запускается в фоне.
У меня запускается так:

Код: Выделить всё

ShellExec %commander_path%\prg\everything\everything.exe -startup
А выгружается так:

Код: Выделить всё

Pragma AutorunFinalizeSection
ShellExec %commander_path%\prg\everything\everything.exe -exit
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

А при чём тут Loopback, если запрос мой?

Даже мысли не было искать по слову "фоновый" и уж тем более "startup". Беру на вооружение.
А вот выгружать лучше так:

Код: Выделить всё

If ProcessExist /F ...
ProcessTerminate /F /TT /A ...
EndIf
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
enginigger
Сообщения: 44
Зарегистрирован: Сб дек 18, 2010 12:27

Сообщение enginigger »

Flasher писал(а):А при чём тут Loopback, если запрос мой?
Пардон, промазал :)
Flasher писал(а):А вот выгружать лучше так:

Код: Выделить всё

If ProcessExist /F ...
ProcessTerminate /F /TT /A ...
EndIf
У меня с моим вариантом проблем не было, ошибок не выскакивало, но Ваш тоже стоит рассмотреть.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

enginigger
Мой вариант по факту выгружает все процессы по заданному пути при наличии. Ваш лично у меня запускает новый экземпляр, торчит в процессах 25 сек. и выходит без закрытия остальных.
И если хотите полной портабельности, путь в кавычки брать таки стоит.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
enginigger
Сообщения: 44
Зарегистрирован: Сб дек 18, 2010 12:27

Сообщение enginigger »

Flasher писал(а): Мой вариант по факту выгружает все процессы по заданному пути при наличии. Ваш лично у меня запускает новый экземпляр, торчит в процессах 25 сек. и выходит без закрытия остальных.
Ваш вариант у меня вызывает ошибку "runtime error 207 at 02eb8e32" при закрытии ТС. :(
Flasher писал(а): И если хотите полной портабельности, путь в кавычки брать таки стоит.
Согласен
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

enginigger писал(а):Ваш вариант у меня вызывает ошибку "runtime error 207 at 02eb8e32" при закрытии ТС.
А вы прописали свой путь вместо ...?

Код: Выделить всё

If ProcessExist /F '%commander_path%\prg\everything\everything.exe' Then
ProcessTerminate /F /TT /A '%commander_path%\prg\everything\everything.exe'
EndIf
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
enginigger
Сообщения: 44
Зарегистрирован: Сб дек 18, 2010 12:27

Сообщение enginigger »

Flasher писал(а):А вы прописали свой путь вместо ...?
Конечно :).
Запускается нормально, закрывается с ошибкой. Autorun последний, 2.03а, Win7x64, TC 9.21a, Everything 1.4.1.924 x64
Ответить