PDA

Показать полную графическую версию : [решено] CMD/BAT+VBS завершение процессов


dinis.grek
13-07-2014, 07:37
Del

Georgio
13-07-2014, 10:36
Как вариант:

Set fso = CreateObject("Scripting.FileSystemObject")
Set RegFile = fso.CreateTextFile("ProcKiller.bat", true)
RegFile.WriteLine("taskkill /F /IM Дочерний_процесс_2.exe /T")
RegFile.WriteLine("taskkill /F /IM ДОЧЕРНИЙ.EXE /T")
RegFile.WriteLine("taskkill /F /IM дочерний.exe /T")
RegFile.WriteLine("taskkill /F /IM Программа.EXE /T")
RegFile.WriteLine("del " & chr(34) & "%~f0" & chr(34))
RegFile.Close
CreateObject("WScript.Shell").Run "ProcKiller.bat", 0, False

.

Iska
13-07-2014, 18:08
dinis.grek, перечислите конкретные имена основного процесса, дочерних процессов, укажите какие процессы порождают дочерние процессы, как хотите завершать — запросом на завершение или принудительно.

Iska
13-07-2014, 19:57
Поместите следующий код:
Option Explicit

Dim objSWbemObjectEx
Dim elem

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
For Each elem In Array("Paint it!.EXE", "PsiService_2.exe", "wisptis.exe")
For Each objSWbemObjectEx In .ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" & elem & "'")
WScript.Echo objSWbemObjectEx.Name, vbTab, objSWbemObjectEx.ProcessID, vbTab, objSWbemObjectEx.ParentProcessID
Next
Next
End With

WScript.Quit 0

в файл с расширением .vbs. Исполните его двойным щелчком при запущенных вышеуказанных процессах. Когда появится диалоговое окно, наподобие:
http://i.imgur.com/4F8FSLQ.png
— нажмите в нём Ctrl-C, чтобы скопировать его содержимое, наподобие:
---------------------------
Windows Script Host
---------------------------
notepad.exe 1616 2348
---------------------------
ОК
---------------------------

Полученное содержимое вставьте сюда, на форум, оформив его тэгом [code] (http://forum.oszone.net/misc.php?do=bbcode#code).

Iska
13-07-2014, 21:03
Поместите следующий код:
Option Explicit

Dim strPath2Process
Dim objSWbemObjectEx
Dim lngProcessID


With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
strPath2Process = WScript.CreateObject("WScript.Shell").CurrentDirectory

If .Get("Win32_Process").Create(strPath2Process & "\Paint it!.exe", strPath2Process, Nothing, lngProcessID) = 0 Then
.ExecNotificationQuery( _
"SELECT * FROM __InstanceDeletionEvent WITHIN 1 " & _
"WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Handle = '" & CStr(lngProcessID) & "'" _
).NextEvent

For Each objSWbemObjectEx In .ExecQuery("SELECT * FROM Win32_Process WHERE ParentProcessID = '" & CStr(lngProcessID) & "'")
If objSWbemObjectEx.Terminate() <> 0 Then
WScript.Echo "Can't terminate child process [" & objSWbemObjectEx.Name & "]."
End If
Next
Else
WScript.Echo "Can't execute [" & strPath2Process & "\Paint it!.exe]."
WScript.Quit 1
End If
End With

WScript.Quit 0

в файл с расширением .vbs в папку с исполняемым файлом «Paint it!.exe». Запустите его двойным щелчком из Проводника. Данный скрипт должен запустить процесс «Paint it!.exe», отследить его завершение, закрыть все дочерние процессы, порождённые именно этим процессом «Paint it!.exe» и завершить свою работу. Пробуйте.

Iska
13-07-2014, 21:44
Не работает так. Так как есть своя специфика, как я упомянул собирается портативная версия. Файл скрипта перед сборкой добавляется в корневой каталог проекта. Перед запуском программы собранной выпадает ошибка выполнения скрипта.
Какая именно ошибка?

Iska
14-07-2014, 07:25
dinis.grek, покажите Ваш «Package.ini».

Все для более точного ответа и проверки решения я смогу отписать завтра. »
Не нужно. Ваш «Paint it!.exe» — «чёртик из табакерки»:
- Понятно, - сказала Алиса, - а "_хливкие_"?
- "_Хливкие_" - это хлипкие и ловкие. "Хлипкие" значит то же, что и "хилые". Понимаешь, это слово как бумажник. Раскроешь, а там два отделения! Так и тут - это слово раскладывается на два!
- Да, теперь мне ясно, - заметила задумчиво Алиса.

Эта оболочка уже запускает и основной исполняемый файл, и прочие потребные ресурсы. Кстати, у меня запуск «wisptis.exe» не наблюдается. Так что выложенный выше мною код тут никаким боком.




© OSzone.net 2001-2012