goodbytes
Goto Top

VBS Prozess anhand Fenstername beenden

Hallo,
wie kann ich eine Batch mittels vbs anhand des Fenstertitels beenden? Die cmd.exe zeigt als Fenstertitel an: "Administrator: Test", da ich in der Batch "Title Test" verwendet habe.

Gruß
Torsten

Content-Key: 257021

Url: https://administrator.de/contentid/257021

Printed on: April 24, 2024 at 22:04 o'clock

Member: emeriks
Solution emeriks Dec 08, 2014 updated at 14:40:05 (UTC)
Goto Top
Hi,
Du könntest über WMI die Befehlszeilen der laufenden Prozesse abfragen und dann den entsprechenden Prozess beenden.
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")   
Set oProcesses = oWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'cmd.exe'",,48)   
For Each oProcess in oProcesses 
  if instr(oProcess.CommandLine, {Pfad zur Batch}) > 0 then
    oProcess.Terminate
  end if 
Next

E.
Mitglied: 114757
114757 Dec 08, 2014 at 11:05:30 (UTC)
Goto Top
Moin Torsten,
würde die Methode von Emeriks auch bevorzugen. Hier aber noch ein "dirty"-Trick wenn Word installiert ist face-smile und tatsächlich der Fenster-Titel verwendet werden soll. Ich weiß das das nicht universell ist, aber eben einfach noch eine Möglichkeit.
Const APP_TITLE = "Administrator: Test"  
Set objWord = CreateObject("Word.Application")  
objWord.Visible = False
Set tasks = objWord.Tasks
If tasks.Exists(APP_TITLE) Then
    tasks(APP_TITLE).Close
End If
objWord.Quit()
Gruß jodel32
Member: goodbytes
goodbytes Dec 08, 2014 at 14:36:10 (UTC)
Goto Top
@emeriks
Ja,so bekomme ich alle Prozesse mit "cmd.exe", aber ich möchte nur einen davon killen. Ich müsste doch mittels WMI auch irgendwie an den Fenstertitel kommen denke ich, oder?

@114757
Word ist leider nicht installiert, da es sich um einen Server handelt, da brauche ich sonst kein Word...
Trotzdem danke! face-smile

Torsten
Member: goodbytes
goodbytes Dec 08, 2014 at 14:39:57 (UTC)
Goto Top
Nachtrag...
@emeriks
Aaaaaach sooooo, da hab ich jetzt aber nicht richtig hingeguckt. Natürlich, indem ich nach dem Pfad zu der gestarteten Batch filtere! Menno, manchmal sollte man erstmal richtig lesen.. face-wink

Vielen Dank!!! face-smile
Torsten
Member: goodbytes
goodbytes Dec 09, 2014 at 11:37:46 (UTC)
Goto Top
So funktioniert es jetzt bestens...
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
Set objProzesse = WMI.ExecQuery("Select * from Win32_Process")  

For Each objProzess in objProzesse
		
  If instr(objProzess.CommandLine, "Testbatch.cmd") Then   
	objProzess.Terminate (0) 
  End If 
Next

Danke nochmal !!! face-smile

Torsten