Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Убить процесс, если окно активно (http://forum.oszone.net/showthread.php?t=176524)

rsod 25-05-2010 11:51 1420627

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

amel27 26-05-2010 07:57 1421288

имхо проще на 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 1422332

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

NiOl 27-05-2010 18:48 1422373

Так?

Код:

@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 1422405

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

amel27 28-05-2010 15:59 1423032

Цитата:

Цитата rsod
если окно процесса gta_sa.exe активно »

неясно, что значит "активно" - фокус ввода, отображение "поверх всех" или просто наличие этого окна у процесса?


Время: 01:23.

Время: 01:23.
© OSzone.net 2001-