Страница 79 из 243

Добавлено: Пт янв 11, 2019 13:23
Loopback
Выложил версию с поправленным плагином sysinfo, должна работать как та версия от 7 ноября.

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

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

AutorunFinalizeSection никак не влияет, все директивы обрабатываются на этапе препроцессинга.

Добавлено: Пт янв 11, 2019 16:04
BeTeP
Loopback писал(а):Думаю да, я так понимаю, интересен режим MOVE_LEGACY? Поскольку MOVE_RIGHT делал то, что сейчас в тотале по-умолчанию.
Я в этих режимах не очень разбираюсь. Изображение
Меня интересует перемещение кнопки в место, где она была до версии 7.50.

Добавлено: Пт янв 11, 2019 16:37
Loopback
BeTeP
Да, это MOVE_LEGACY. Хорошо, поправлю, но наверно не сразу сейчас, там надо кое-что переделать.

Добавлено: Пт янв 11, 2019 20:08
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
Такая команда не выполнится. А хотелось бы. В рамках ТС этот момент Гислер по нашей инициативе исправил.

Добавлено: Сб янв 12, 2019 12:38
Loopback
Ну и хорошо.

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

Добавлено: Сб янв 12, 2019 12:50
Flasher
Loopback писал(а):но не думаю, что при таких значениях есть смысл.
Видимо, нет.
Loopback писал(а):Наверно, в этом случае только пытаться скрыть после запуска, если она вообще это позволит.
Флаг снимается из разных программ управления окнами.
Loopback писал(а):Мне тоже :) Это действительно было неудобно.
Эмм. В смысле "было"? Я прошу это исправить. :roll:

Добавлено: Сб янв 12, 2019 14:19
Loopback
Flasher писал(а):Флаг снимается из разных программ управления окнами.
Значит только прятать после запуска. Но эта задача уже явно за пределами ShellExecute. Это надо искать окно запущенной программы и посылать ему сообщение. В принципе на Autoit должно решаться просто.
Flasher писал(а):Эмм. В смысле "было"? Я прошу это исправить.
Я это и имел в виду. Раз это теперь работает в тотале, нужно чтобы работало и здесь. Буду смотреть.

Добавлено: Сб янв 12, 2019 14:39
Flasher
Loopback писал(а):В принципе на Autoit должно решаться просто.
Ага. Или на AHK.
Loopback писал(а):Раз это теперь работает в тотале, нужно чтобы работало и здесь.
Отлично. Ждём'с.

Добавлено: Пн янв 14, 2019 16:25
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

Добавлено: Пн янв 14, 2019 23:31
Flasher
А при чём тут Loopback, если запрос мой?

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

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

If ProcessExist /F ...
ProcessTerminate /F /TT /A ...
EndIf

Добавлено: Вт янв 15, 2019 09:01
enginigger
Flasher писал(а):А при чём тут Loopback, если запрос мой?
Пардон, промазал :)
Flasher писал(а):А вот выгружать лучше так:

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

If ProcessExist /F ...
ProcessTerminate /F /TT /A ...
EndIf
У меня с моим вариантом проблем не было, ошибок не выскакивало, но Ваш тоже стоит рассмотреть.

Добавлено: Вт янв 15, 2019 09:17
Flasher
enginigger
Мой вариант по факту выгружает все процессы по заданному пути при наличии. Ваш лично у меня запускает новый экземпляр, торчит в процессах 25 сек. и выходит без закрытия остальных.
И если хотите полной портабельности, путь в кавычки брать таки стоит.

Добавлено: Вт янв 15, 2019 09:50
enginigger
Flasher писал(а): Мой вариант по факту выгружает все процессы по заданному пути при наличии. Ваш лично у меня запускает новый экземпляр, торчит в процессах 25 сек. и выходит без закрытия остальных.
Ваш вариант у меня вызывает ошибку "runtime error 207 at 02eb8e32" при закрытии ТС. :(
Flasher писал(а): И если хотите полной портабельности, путь в кавычки брать таки стоит.
Согласен

Добавлено: Вт янв 15, 2019 10:01
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

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