Я ищу программное обеспечение (мог быть как сценарий BAT), который мог проверить, работает ли экземпляр программы или нет, прежде, чем запустить ту программу. И если программное обеспечение / сценарий обнаруживает, что программа не работает, это должно запустить ту программу, еще это ничего не должно делать.
Примечание: Программа, которую я собираюсь запустить (uTorrent), не имеет обнаружения, чтобы проверить, работает ли экземпляр себя уже, прежде, чем выполнить себя.
Я спрашиваю это, потому что я в настоящее время использую программное обеспечение (Networx), который выполняет uTorrent, если это обнаруживает, что пропускная способность моего интернет-соединения не использовалась в течение некоторого времени (в моем случае, я установил его для выполнения uTorrent, если это обнаруживает, что 50 КБ или меньше были загружены и загружены в течение 5 мелких периодов).
Однако это не имеет функции, чтобы проверить, работает ли программа уже прежде, чем назвать его. Если это выполняет uTorrent, в то время как uTorrent уже работает, окно uTorrent переходит к передней стороне экрана, крадя фокус окна, который мог быть недовольным, если Вы работаете над окном и не хотите другое окно, идущее в переднюю сторону экрана.
uTorrent / МИНИМИЗИРОВАЛ аргумент, только работает правильно, если uTorrent уже не работает.
Или кто-либо знает о другом программном обеспечении, которое может сделать то, что делает программное обеспечение, которое я в настоящее время использую, за исключением того, что оно проверит, работает ли uTorrent уже, прежде, чем назвать его?
Править: Я хотел бы добавить, что желательно, если программное обеспечение / выполнения сценария, минимизированные или скрытые и не, переходят к переднему плану или крадут фокус окна. Кроме того, программное обеспечение или сценарий BAT предпочтительно должны выйти из себя после того, как это сделало свою задачу.
Что-то вроде этого, возможно?
tasklist | find "programname.exe" if errorlevel 1 c:\path\to\programname.exe
Почти наверняка возможно сделать в пакетном файле, но (как что-либо нетривиальное) это не будет легко.
Однако PowerShell делает это легким:
if (-not (Get-Proceess "Name")) {
#run new instance here
}
где Name
заменяется именем процесса (это обычно - имя файла без .exe
).