Войти

Показать полную графическую версию : Как закрыть процесс, при условии если открыт другой?


KOS9I4OK
17-01-2013, 02:10
Всем привет.
Подскажите как при помощи bat закрыть процесс, при условии если открыт другой?
Разжую вопрос.
Задача такая нужно что бы, если обнаружен процесс "notepad.exe", то завершить процесс "mspaint.exe",если нет такого процесса, то повторить данную команду -N количество раз.
Ну и если возможно, то по завершинии процесса "mspaint" закрыть батник.

P.S.
Извеняюсь если этот вопрос где то разбирался. поиск результатов не дал.
Зарание спасибо!

zion87
17-01-2013, 06:24
@echo off

set process1=notepad.exe
set process2=mspaint.exe

:st
tasklist /FI "ImageName EQ %process1%" | find /I "%process1%"
If %errorlevel% NEQ 0 goto :st
taskkill /f /im %process2%
exit

KOS9I4OK
18-01-2013, 05:24
Спасибо за поддержку. работает.
Еще вопроси как сделать так что бы запустилась сначала команда

@echo off

set process1=notepad.exe
set process2=mspaint.exe

:st
tasklist /FI "ImageName EQ %process1%" | find /I "%process1%"
If %errorlevel% NEQ 0 goto :st
taskkill /f /im %process2%

и что бы она висела в ожидании. ждала запуска "notepad" и при этом запустился к примеру "%programfiles%\winrar\winrar.exe"

zion87
18-01-2013, 06:08
@echo off

set process1=notepad.exe
set process2=mspaint.exe
set process3="%programfiles%\winrar\winrar.exe"

start "" %process3%

:st
tasklist /FI "ImageName EQ %process1%" | find /I "%process1%"
If %errorlevel% NEQ 0 goto :st
taskkill /f /im %process2%

KOS9I4OK
18-01-2013, 19:02
Спасибо. за ответы и за помощь.но возникла некая проблема. опишу суть правды что требуется.
команды работаю отлично, но проблемка вот в чем. нужно смотреть за процессом Firefox.exe, если он запущен то выключать другой процесс. к этому вопросов нет. Решено. но вот проблема в другом. Если переименовать файл в %programfile% скажем firefox.exe на firefox1.exe, то уже команда не работает, а пользователь может ее переименовать как хочет.Возможно ли как то сделать так что бы данная комадна закрывала второй процесс, не зависимо от названия этого Firefox-a ( при любом его названии?)

Iska
19-01-2013, 03:57
KOS9I4OK, пожалуйста, ещё раз, с расстановкой и по-русски.

KOS9I4OK
19-01-2013, 11:31
Хорошо. Вот что у меня сделанно

@echo off
title star game
@echo created by KOS9I4OK
rem CenterSelf
set FGcol=1100
rem ChangeColor %FGcol% 0
rem PrintBoxAt 12 31 3 20 2
rem ChangeColor 0 %FGcol%
rem Wait 1500
rem ShadeBoxAt 13 32 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 34 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 36 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 38 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 40 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 42 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 44 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 46 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 48 1 2 2
rem ClearColor
rem Locate 25 1

set process1=firefox.exe
set process2=arma2OA.exe
set process3="Expansion\beta\arma2oa.exe" -beta=Expansion\beta;Expansion\beta\Expansion -nosplash -mod=@DayZ -connect=213.128.хх.хх -port=2302 -password=123456

start "" %process3%

:st
tasklist /FI "ImageName EQ %process1%" | find /I "%process1%"
If %errorlevel% NEQ 0 goto :st
taskkill /f /im %process2%
exit

Это все я запаковываю .exe файл и передаю игроку(клиенту).

Далее этот файл запускает игру. В игре как и в других есть возможность использовать читы.

Так вот чит включается по средством включенного браузера Firefox.exe. При данном коде работает все как надо. Если во время игры включили браузер, то закрылась игра.

Но если переименовать файл запуска браузера к примеру c firefox.exe в firefox123.exe, браузер запустится с именем процесса firefox123.exe и данный код не сработает.

Вот сам теперь вопрос. Возможно ли закрыть данный браузер (не зависимо от его названия) или вообще все браузеры на компьюторе?

Anonymоus
19-01-2013, 17:09
KOS9I4OK, для оформления примеров кода используется bb-код code.
Насчёт закрытия окон браузера вне зависимости от имени процесса - можно использовать класс окна. Для этого нужна консольная версия утилиты NirCmd (http://www.nirsoft.net/utils/nircmd.html).

@Echo Off
:: Убиваем ie
nircmdc win close class "IEFrame"
:: Убиваем оперу
nircmdc win close class "OperaWindowClass"
:: Убиваем хром
nircmdc win close class "Chrome_WidgetWin_0"
:: Убиваем огнелис
nircmdc win close class "MozillaWindowClass"

Имейте в виду, что у chrome и firefox при нескольких открытых вкладках окно не закроется автоматически, а попросит подтверждения на закрытие. Для обхода этого вы можете использовать эмуляцию нажатия клавиш, посланных в соответствующее окно с помощью всё того же nircmdc.exe (читайте справочный файл).

Замечу, что принудительно закрывать пользователю браузер - плохое решение. У него там может быть открыта нужная информация. Стоит хотя бы предупреждение перед закрытием выдавать. А от читеров батник не спасёт - ведь отредактировать его проще простого.

KOS9I4OK
19-01-2013, 17:38
для оформления примеров кода используется bb-код code. »
понял. Извеняюсь. Спасибо за ответ.




© OSzone.net 2001-2012