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-ID: 257021

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

Ausgedruckt am: 25.11.2024 um 05:11 Uhr

emeriks
Lösung emeriks 08.12.2014 aktualisiert um 15:40:05 Uhr
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.
114757
114757 08.12.2014 um 12:05:30 Uhr
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
goodbytes
goodbytes 08.12.2014 um 15:36:10 Uhr
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
goodbytes
goodbytes 08.12.2014 um 15:39:57 Uhr
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
goodbytes
goodbytes 09.12.2014 um 12:37:46 Uhr
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