Войти

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


Freaxxx
12-06-2012, 19:15
Доброго времени суток, ребята, помогите, необходим скрипт

нужно сделать слебующее:
есть 5 процессов которые не должны запускаться
и 1 процесс, при запуске которого, должен закрыться процесс, и открыться другой файл.

имеется код


///////скрытый режим
#NoTrayIco
Opt("WinTitleMatchMode", 4)
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 3)
Opt("TrayIconHide", 1)
/////// запись в автозагрузку
$sName = 'close.exe'
$sRegRun = 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
If RegRead($sRegRun, @ScriptName) = '' Or RegRead($sRegRun, @ScriptName) <> @ScriptFullPath Then
RegWrite($sRegRun, @ScriptName, "REG_SZ", @ScriptFullPath)
EndIf

//////// проверка процесса (если есть то убиваем, и запускаем файл)
While 1
ProcessClose(Processwait("good_process.exe"))
/////// запуск файла если есть процесс
Run("file1.exe")
Wend
подскажите, что /как/куда добавить, чтоб
process1.exe
process2.exe
process3.exe
process4.exe
process5.exe
закрывались при запуске.
в delphi напирмер делал следующим образом:

ставил таймер с интевалом 1 секунда, и код

WinExec(Pchar('taskkill /f /im process.exe'),sw_hide);
в таком случае, посылалась команда завершения процесса, независимо от того, есть он или нет.

вся программа должна работать в скрытом режиме, заранее благодарю за помощь

Creat0R
12-06-2012, 23:59
имеется код »
Это php-код?
Используйте тег code а не php.

что /как/куда добавить, чтоб
process1.exe
process2.exe
process3.exe
process4.exe
process5.exe
закрывались при запуске. »
Ну так у вас в коде ведь уже имеется решение, ProcessClose закрывает процесс, в чём проблема?

Iska
13-06-2012, 00:29
Creat0R, ему надо следить одновременно за несколькими процессами. То есть, что-нибудь наподобие «Prevent process from running» со «Script Center»:
AutoItSetOption("MustDeclareVars", 1)

Local $aProcesses = StringSplit("notepad.exe|calc.exe|wordpad.exe", "|")
Local $sProcessName

Local $sComputer = "."
Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator")
$oSWbemLocator.Security_.Privileges.AddAsString("SeDebugPrivilege", True)

Local $oSWbemServicesEx = $oSWbemLocator.ConnectServer($sComputer, "root\cimv2")
Local $oSWbemEventSource = $oSWbemServicesEx.ExecNotificationQuery( _
"SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")

Do
With $oSWbemEventSource.NextEvent().TargetInstance
For $sProcessName In $aProcesses
If $sProcessName = .Name Then
If .Terminate() = 0 Then
; ConsoleWrite .Name
EndIf
EndIf
Next
EndWith
Until False

$oSWbemEventSource = 0
$oSWbemServicesEx = 0
$oSWbemLocator = 0

Exit(0)


… и открыться другой файл. »
Что сие означает — я не понял.

AZJIO
13-06-2012, 06:21
Freaxxx, сможешь разобраться в исходнике (http://azjio.ucoz.ru/load/vsjo_dlja_autoit3/skompilirovannye_skripty/process/4-1-0-54)? Там слежение за процессами оргинизованно, а вместо запуска пишется лог.

Freaxxx
13-06-2012, 14:12
Цитата Freaxxx:… и открыться другой файл. »
Что сие означает — я не понял. »
ну это уже реализовано, просто при обнаружении определенного процесса, должен открыться определенный файл

Freaxxx
13-06-2012, 14:31
ладно ребят, спасибо, сделаю дополнительный файл на delphi

Iska
13-06-2012, 15:26
просто при обнаружении определенного процесса, должен открыться определенный файл »
Приведите пример.

AZJIO
14-06-2012, 04:35
Freaxxx, ф-я ProcessExists проверяет существование процесса. Только триггер добавить, чтобы после срабатывания функции не вызывать запуск файла повторно.
ShellExecute - запуск файла в ассоциированной программе.




© OSzone.net 2001-2012