lz57005

|
Posted: Wed Aug 09, 2023 22:29 Post subject: |
|
|
LonerD wrote: | Другими словами немного подробней.
Есть мой Тотал, настроенный. В Autorun прописан запуск программы, она запускается и работает в фоне. Я могу запускать несколько копий моего Тотала и закрывать их. Всё это время программа должна быть запущена. Когда я закрою последнюю копию моего Тотала - программа должна выгрузиться.
В то же время параллельно я могу запускать чистый Тотал или чужие сборки. Они никак не должны влиять на запуск и закрытие программы.
|
Очевидное решение использовать как признак запуска программы наличие/отсутствие PID c нужным ImagePath, а не именем процесса, а при закрытии проверять аналогично процессы с путём %commander_exe% и закрывать программу тоже не по имени, вот пример:
MultiTCruncloseExample.7z
Code: | autorun.cfg
...
ShellExec /SW_HIDE "%COMMANDER_PATH%\utils\StartDummy.bat"
...
Pragma AutorunFinalizeSection
...
ShellExec /SW_HIDE "%COMMANDER_PATH%\utils\StopDummy.bat" |
cmd, nircmd, pathpid (самописная утилита которая выдаёт в stdout/stderr pid первого процесса с путём из параметра запуска)
Dummy.exe запустится только с первым экземпляром тотала и закроется с последним, имея ввиду только тоталы и запускаемую программу расположенные в конкретных папках, игнорируя иные экземпляры запущенные из других мест |
|