Проблема следующего характера, запущено несколько program.exe, при завершении работы одного из процессов на какое то время он еще "висит" в фоне и что то делает(иногда очень долго).
Необходимо из командной строки завершить именно этот процесс, который стал фоновым, остальные должны продолжать работу.
Upd: Все должно происходить автоматически, процессы работают на серверах (батник зациклен)
скачайте sysinternals утилиты, там есть pskill для убития процесса
чтобы зациклено? вы уверены, что вы в командной строке достаточно разбираетесь, чтобы написать цикл? А то судя по вопросам вам нужно не " как из командной строки убить процесс".
Сергей: вы видимо читать не умеете. мне нужно одной командой получить PID процесса program.exe (только фонового), второй командой его убить. причем тут мои знания командной строки, если вы сами не знаете как это сделать?
Фоновый и интерактивный процессы выглядят одинаково, поэтому определить какой из них кто просто глядя на список процессов вы не сможете. Для этого нужно чтобы процесс мог заранее сообщать свой PID, например в log файл, или создать обертку, которая будет это делать при запуске.
Также, вы можете скачать sysinternals утилиты, про которые я упоминал, там есть полный набор для работы с процессами из командной строки, включая pslist и pskill.
P.S. Я бы сперва попробовал разобраться, что именно делает этот процесс. Может он дописывает изменения в базу, или завершает подключения к удаленным клиентам, и его принудительное завершение может привести к проблемам.
Сергей: процесс просто зависает при завершении работы(становиться фоновым), пока причину не выяснил. вынужден искать костыли. если стандартный диспетчер задач может определить какие приложение активны (и есть окна), а какие фоновые то должно же быть что то что сделает то же самое через командную строку.
yazhog: Серьезно, уже несколько раз сказали, что простым способом нельзя определить есть ли у приложения окно.
chrome32.exe это доказывает.
Как вариант - перебрать все существующие окна, запомнить их PID, и затем уже перебирать все процессы, проверяя порождал ли процесс подобное окно или не является ли он сам окном.
Но перебор всех окон в win это весьма нетривиальная задача из-за способа их организации (иерархия с разными уровнями вложенности).
Если есть возможность править сами program.exe, было бы проще.