Ein Programm per Windows Script Shell (WSH) schließen.

 

1. Möglichkeit: Programm-Name aus Prozessliste (Taskmanager) eintragen

Option 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

Next

2. Möglichkeit: Programm-Name aus Prozessliste (Taskmanager) eintragen

Option 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()

Next

3. Möglichkeit: Programms mit Sendkeys beenden

Option 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 _
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

Next

 

4. 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 if
On 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

Next

WScript.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

Next

MsgBox "Es wurden " & counter & " Notepads geschlossen!"