Good to Know Database

Instanzen einer Anwendung mit VBScript beenden


Zum Beenden einer Anwendung über ein Visual Basic Script, können Sie den folgenden Code verwenden. Dabei wird eine Verbindung zur Windows Management Instrumentation (WMI) aufgebaut. Von der WMI werden alle laufenden Instanzen des gewünschten Programms (hier notepad.exe) ermittelt. Im Anschluss werden alle gefundenen Instanzen mit der Methode Terminate() beendet.

Option Explicit

' Declaration of variables
Dim objWMIService
Dim colProcess
Dim objProcess

' Connect to Windows Management Instrumentation (WMI) object using a moniker
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

' Execute a query to get all running instances of specified application
Set colProcess = objWMIService.ExecQuery("Select * From Win32_Process Where Name = 'notepad.exe'")

' Terminate all running instances of the application
For Each objProcess In colProcess
  objProcess.Terminate()
Next

' Deallocate used objects
Set objProcess = Nothing
Set objWMIService = Nothing

' Quit Visual Basic Script
WScript.Quit()

Wenn Sie diese Funktionalität in einem größeren VBScript verwenden wollen, können Sie diese auch mit einer eigenen Funktion umsetzen. Dies hat den Vorteil, dass Sie nur einmal die Funktion deklarieren müssen und diese beliebig oft einsetzen können. Beim Aufruf der folgenden Funktion müssen Sie nur die zu beendende Anwendung als Parameter übergeben.

Function TerminateApplication(strApplication)
  ' Declaration of variables
  Dim objWMIService
  Dim colProcess
  Dim objProcess
  
  ' Connect to Windows Management Instrumentation (WMI) object using a moniker
  Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
  
  ' Execute a query to get all running instances of specified application
  Set colProcess = objWMIService.ExecQuery("Select * From Win32_Process Where Name = '" & strApplication & "'")
  
  ' Terminate all running instances of the application
  For Each objProcess In colProcess
    objProcess.Terminate()
  Next
  
  ' Deallocate used objects
  Set objProcess = Nothing
  Set objWMIService = Nothing
End Function

Der Aufruf der Funktion erfolgt durch die folgende Codezeile. Die Anwendung (hier notepad.exe) können Sie entsprechend anpassen.

TerminateApplication("notepad.exe")


Dieser Eintrag wurde am 11.01.2014 erstellt und zuletzt am 15.01.2014 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_29_2479.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer