Sie sind hier: Startseite
 Liste aller Codebeispiele

Alle Internet Explorer-Prozesse stoppen

Ein Beispiel zum Einsatz der Klasse System.Diagnostics.Process aus der .NET-Klassenbibliothek.

Autor: Dr. Holger Schwichtenberg 

Beschreibung

Die Klasse Process bietet zwei verschiedene Methoden zum Beenden von Prozessen.
  • Die sanfte Methode ist CloseMainWindow(). Diese hat den gleichen Effekt wie der Aufruf von DATEI/BEENDEN im Hauptfenster einer Windows-Anwendung durch den Benutzer. Wenn Änderungen an einem Dokument vorgenommen wurden, fragt die Anwendung den Benutzer zunächst, ob die Änderungen gespeichert werden sollen. Der Benutzer kann speichern oder den Beendigungs-Vorgang abbrechen. Die Methode liefert True zurück, wenn der Beendigungs-Vorgang angestoßen werden konnte. Ein True sagt aber nichts darüber aus, ob die Anwendung auch tatsächlich geschlossen wurde. False bedeutet, die Anwendung kann derzeit nicht normal beendet werden, z.B. weil ein Dialogfenster geöffnet ist.
  • Im Fall von Kill() hat der Benutzer keinen Einfluss: Der Prozess wird sofort ohne Nachfrage beendet. Änderungen an offenen Dokumenten werden nicht gespeichert.

Die Klasse Process kann nur lokale Prozesse beenden. Es ist hiermit nicht möglich, Prozesse auf entfernten Computern zu beenden. Dies kann mit der WMI-Klasse Win32_Process erfolgen.

Beispiel
Das folgende Beispiel beendet alle laufenden Instanzen des Internet Explorers (Dateiname: iexplorer.exe, Prozessname: iexplore). Zunächst wird versucht, den Prozess mit CloseMainWindow() zu beenden. Wenn das nicht funktioniert, wird Kill() aufgerufen.

Programmcodebeispiele Visual Basic .NET (VB.NET)

' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Alle Internet Explorer-Prozesse stoppen
' (C) Holger@Schwichtenberg.de
' ============================
Sub Prozesse_Stoppen()
Const PNAME As String = "IEXPLORE"

Dim p As System.Diagnostics.Process
Dim pp As System.Diagnostics.Process()

' --- Prozesse dieses Namens ermitteln
pp = Process.GetProcessesByName(PNAME)
' --- Schleife über diese Prozesse
out("Beenden aller Prozesse mit Namen: " & PNAME)
out("Anzahl Prozesse: " & pp.Length)
For Each p In pp
out("Prozess: " & p.Id & " wird beendet...")
' --- Beenden-Anfrage stellen...
If p.CloseMainWindow Then
' --- Normales Ende
out(" Prozess wurde normal beendet!")
Else
' --- Keine Reaktion -> gewaltsames Ende
p.Kill()
out(" Prozess wurde gewaltsam beendet!")
End If
Next
End Sub

Programmcodebeispiele CSharp (C#)

using System;
using System.Diagnostics;

namespace FCLBuch._SystemDiagnostics {

public class Samples_Prozesse {
public void Prozesse_Stoppen() {

// Alle Internet Explorer-Prozesse stoppen
string processName = "iexplore";

// Prozesse dieses Namens ermitteln
Process[] pp = Process.GetProcessesByName(processName);

// Schleife über diese Prozesse
FclOutput.PrintOut("Beenden aller Prozesse mit Namen: " + processName);
FclOutput.PrintOut("Anzahl Prozesse: " + pp.Length);

foreach ( Process p in pp ) {

FclOutput.PrintOut("Prozess: " + p.Id + " wird beendet...");

// Beenden Anfrage stellen...
if ( p.CloseMainWindow() ) {
// Normales Ende
FclOutput.PrintOut(" Prozess wurde normal beendet!");
} else {
// Keine Reaktion -> gewaltsames Ende
p.Kill();
FclOutput.PrintOut(" Prozess wurde gewaltsam beendet!");
}
}
}
}
}

Querverweise

 Definition '.NET Framework Class Library'  Verfügbarkeit der Klasse 'System.Diagnostics.Process'  Übersicht über den FCL-Namensraum 'System.Diagnostics'  .NET & Visual Studio Community Portal