Как вызвать taskkill только для запущенного процесса?
Мне необходимо вызвать taskkill Excel если он запущен. Если он не запущен то, он выводит консоль некрасивую ошибку. Мне бы ее не хотелось видеть.
popen('taskkill /IM "EXCEL.EXE" /F', 'r');
ERROR: The process "EXCEL.EXE" not found.
Ответы (1 шт):
Автор решения: MeowNya
→ Ссылка
Разобралась.
$handle = popen('TASKLIST /FI "IMAGENAME eq EXCEL.exe"', 'r');
$result = fread($handle, 1024);
if (!contains($result,'INFO: No tasks are running which match the specified criteria.'))
popen('taskkill /IM "EXCEL.EXE" /F', 'r');
Возможно строку с ошибкой нужно будет отлавливать в русском варианте или в другом в зависимости от локализации ОСи.
contains - самописная функция, взятая из проекта.
UPD
Решение от Daemon-5.
popen('taskkill /IM "EXCEL.EXE" /F >NUL 2>NUL', 'r');