Ein Programm per Windows Script Shell (WSH) schließen.
1. Möglichkeit: Programm-Name aus Prozessliste (Taskmanager) eintragen
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) eintragen
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 beenden
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 _
um die Anwendung zu aktiveren damit SendKeys das richtige Programm anspricht.
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 if
End with
Exit For
End If
Next4. Möglichkeit: mehrere Instanzen eines Programms beenden
' 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!"