PDA

Показать полную графическую версию : Убить процесс, если окно активно


rsod
25-05-2010, 11:51
У меня ситуация такая.
Необходимо убить процесс, если окно с заголовком XXX активно (или окно процесса xxx.exe), и после того, как окно станет неактивным, вновь этот процесс запустить. Как-то так.

amel27
26-05-2010, 07:57
имхо проще на CMD:
For /F "Tokens=2 Delims=," %%i In (
'TaskList /NH /FO CSV /FI "WINDOWTITLE eq XXX"^|Find /I "xxx.exe"') Do (
TaskKill /PID %%~i /T /F
Start "" xxx.exe
)
то же для некоторых локализованных Windows:
For /F "Tokens=2 Delims=," %%i In (
'TaskList /NH /FO CSV /FI "Название окна eq XXX"^|Find /I "xxx.exe"') Do (
TaskKill /PID %%~i /T /F
Start "" xxx.exe
)

rsod
27-05-2010, 17:56
блин, что-то не получается.
Мне надо так:
если окно процесса gta_sa.exe активно, то убить процесс lswitch.exe
если окно процесса gta_sa.exe не активно и процесс lswitch.exe не запущен, то запустить "c:\progra~1\lswitch.exe 20"

NiOl
27-05-2010, 18:48
Так?

@echo off
SetLocal EnableExtensions
rem SetLocal EnableDelayedExpansion

set FindPrc=gta_sa.exe
set KillPrc=lswitch.exe
set StartPrc="c:\progra~1\lswitch.exe 20"

for /f "tokens=1 delims=" %%P in ('tasklist ^| find /c /i "%FindPrc%"') do if /i %%P EQU 0 (
Start "" %StartPrc%
) else (
taskkill /im %KillPrc% /f /t
)

rsod
27-05-2010, 19:43
нет
C:\Windows\system32>c:\run-kill.bat
Успешно: Процесс, с идентификатором 3452, дочерний процесса 1172, был завершен.
окно активно не было
в общем, гнилая эта затея.

amel27
28-05-2010, 15:59
если окно процесса gta_sa.exe активно »
неясно, что значит "активно" - фокус ввода, отображение "поверх всех" или просто наличие этого окна у процесса?




© OSzone.net 2001-2012