Как проверить, запущен ли экземпляр программы или нет, перед запуском этой программы?

Я ищу программное обеспечение (может быть, как сценарий BAT), который может проверить, если экземпляр программы работает или нет, перед запуском этой программы. И если программное обеспечение / скрипт обнаруживает, что программа не запущена, он должен запустить эту программу, иначе он не должен ничего делать.

Примечание: программа, которую я буду работать (uTorrent) не имеет обнаружения, чтобы проверить, если экземпляр уже запущен, прежде чем запускать себя.

Я прошу это потому, что я в настоящее время с помощью программного обеспечения (Networx), которая работает с uTorrent, если обнаружит, что мое интернет-соединение пропускная способность не используется в течение некоторого времени (в моем случае я установил его запускать uTorrent, если обнаружит, что более 50 КБ была скачана и загружена в течение 5 минут).

однако, он не имеет функцию, чтобы проверить, если программа уже работает, прежде чем вызвать его. Если он работает uTorrent в то время как uTorrent уже работает, окно uTorrent идет в передней части экрана, кража фокус окна, который может быть отвлекающим, если вы работаете на окне и не хотите, чтобы другое окно собирается в передней части экрана.

аргумент uTorrent /MINIMIZED работает корректно только в том случае, если uTorrent еще не запущен.

или кто-нибудь знает другое программное обеспечение, которое может делать то, что программное обеспечение, которое я использую в настоящее время делает, за исключением того, что он будет проверять, если uTorrent уже работает, прежде чем вызывать его?

Edit: I хотелось бы добавить, что предпочтительнее, если программное обеспечение / скрипт работает свернуто или скрыто и не переходит на передний план или не крадет фокус окна. Кроме того, программное обеспечение или сценарий BAT предпочтительно должны выйти из себя после того, как он выполнил свою задачу.

15
задан galacticninja
09.04.2023 10:02 Количество просмотров материала 3427
Распечатать страницу

2 ответа

что-то вроде этого, наверное?

tasklist | find "programname.exe"
if errorlevel 1 c:\path\to\programname.exe
3
отвечен Jason Sherman 2023-04-10 17:50

это почти наверняка можно сделать в пакетном файле, но (как и все нетривиальное) это будет нелегко.

однако PowerShell делает это легко:

if (-not (Get-Proceess "Name")) {
  #run new instance here
}

здесь Name заменяется именем процесса (обычно это имя файла без .exe).

1
отвечен Richard 2023-04-10 20:07

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх