Programm beenden |
|
Ein Programm per Windows Script Shell (WSH) schließen.
1. Möglichkeit: Programm-Name aus Prozessliste (Taskmanager) eintragenOption Explicit
Dim wmi, programm, process, system programm = "deinprogrammname.exe" 'Programm-Name klein schreiben Set wmi = GetObject("winmgmts:") Set system = wmi.instancesOf("win32_process") For Each process In system If lcase(process.name)=programm Then process.Terminate (0) End If Next2. Möglichkeit: Programm-Name aus Prozessliste (Taskmanager) eintragenOption Explicit
Dim pc, programm Dim wmi Dim col, obj ' PC Name localhost ist der eigene Rechner pc = "localhost" programm = "'notepad.exe'" Set wmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & pc & "\root\cimv2") Set col = wmi.ExecQuery ("Select * from Win32_Process Where Name=" & programm) For Each obj In col Msgbox obj.name 'obj.caption obj.Terminate() Next3. Möglichkeit: Programms mit Sendkeys beendenOption Explicit
Dim pc, programm, fenstername Dim wmi, system,, process, system Dim col, obj programm = "notepad.exe" fenstername = "Unbenannt - Editor" ' Editor mit SendKeys beenden. Sanfter als mit Terminate. Set wmi = GetObject("winmgmts:") Set system = wmi.instancesOf("win32_process") For Each process In system If lcase(process.name)=programm Then Set WshShell = CreateObject("WScript.Shell") With WshShell ' Hier den exakt gleichen Namen eintragen der im Fensterkopf steht _ f = .AppActivate(fenstername) if f then ' hat es auch wirlich geklappt (Fenstertitel ist gleich) .SendKeys "%{F4}" 'ALT-F4 ' .SendKeys "~" 'manches Programm will z.B. noch ein "Enter" End with Exit For End If Next4. Möglichkeit: mehrere Instanzen eines Programms beenden notepadkiller.vbs
' Beendet alle Instanzen von Notepad ' (C) Tobias Weltner, c't 13/2001 ' mit WMI verbinden On Error Resume Next Set wmi = GetObject("winmgmts:") If err.number > 0 Then MsgBox "WMI nicht installiert!" WScript.Quit End ifOn Error Goto 0 ' Anfrage formulieren wql = "select * from win32_process" ' Absenden Set ergebnis = wmi.ExecQuery(wql) ' Auswerten For Each objekt In ergebnis liste = liste & objekt.name & " Prozess-ID: " & objekt.processID & vbCr NextWScript.Echo "Liste aller Prozesse:" & vbCr & liste MsgBox "Beende nun alle Notepad-Instanzen!" wql = "select * from win32_process where name='notepad.exe'" Set ergebnis = wmi.ExecQuery(wql) counter = 0 For Each notepad In ergebnis counter = counter + 1 Notepad.Terminate 0 NextMsgBox "Es wurden " & counter & " Notepads geschlossen!" |