Freigeben über


Exemplarische Vorgehensweise: Verwalten eines Windows-Prozesses

Aktualisiert: November 2007

Die in diesem Thema beschriebenen Verfahren führen Sie Schritt für Schritt in das Erstellen eines Prozesses, das Reagieren auf das Beenden eines Prozesses und das Beenden eines Prozesses ein. Im ersten Abschnitt erstellen Sie eine Windows-Anwendung mit Button-Steuerelementen zum Starten und Beenden eines Editor-Prozesses. Sie starten unterschiedliche Instanzen von Editor einzeln und beenden diese dann zusammen. Im zweiten Abschnitt erstellen Sie eine Konsolenanwendung, die die auf dem Computer ausgeführten Prozesse auflistet.

Weitere Informationen über das Verwenden der Process-Komponente zur Interaktion mit Systemprozessen finden Sie unter Einführung in die Überwachung und Verwaltung von Windows-Prozessen.

Hinweis:

Je nach den aktiven Einstellungen oder der verwendeten Version können sich die angezeigten Dialogfelder und Menübefehle von den in der Hilfe beschriebenen unterscheiden. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. Weitere Informationen hierzu finden Sie unter Visual Studio-Einstellungen.

So erstellen Sie die Anwendung

  1. Erstellen Sie im Dialogfeld Neues Projekt eine Visual Basic-, Visual C#- oder Visual J#-Windows-Anwendung.

  2. Öffnen Sie den Form1-Designer, klicken Sie in der Toolbox auf die Registerkarte Windows Forms, und fügen Sie dann dem Formular zwei Schaltflächen hinzu.

  3. Ändern Sie im Eigenschaftenfenster die folgenden Eigenschaften:

    Steuerelement

    Eigenschaft

    Wert

    Button1

    Name

    ButtonStart

     

    Text

    Prozess starten

    Button2

    Name

    ButtonStop

     

    Text

    Prozess beenden

  4. Klicken Sie in der Toolbox auf die Registerkarte Komponente, und ziehen Sie eine Instanz der Process-Komponente auf die Designeroberfläche.

  5. Geben Sie für die Komponente den Namen myProcess ein.

So starten Sie den Notepad.exe-Prozess

  1. Erweitern Sie im Eigenschaftenfenster für die Instanz der Process-Komponente die StartInfo-Eigenschaft, und legen Sie die FileName-Eigenschaft auf notepad.exe fest.

  2. Doppelklicken Sie auf die Schaltfläche Starten, um auf den Code-Editor zuzugreifen, und fügen Sie dann dem ButtonStart_Click()-Ereignis den folgenden Code hinzu:

    myProcess.Start
    
    myProcess.Start();
    
  3. Speichern Sie alle Dateien, erstellen Sie anschließend die Anwendung, und führen Sie sie aus.

  4. Klicken Sie mehrmals auf die Schaltfläche Prozess starten. Dabei wird jedes Mal eine neue Instanz von Notepad geöffnet.

    Sicherheitshinweis:

    Wenn die Ausführung in einer teilweise vertrauenswürdigen Umgebung erfolgt, kann der Vorgang aufgrund fehlender Berechtigungen eine SecurityException-Ausnahme auslösen. Weitere Informationen hierzu finden Sie unter Grundlagen der Codezugriffssicherheit.

  5. Schließen Sie die einzelnen Editor-Anwendungen.

  6. Schließen Sie die Form1-Anwendung.

So schließen Sie alle aktuell geöffneten Instanzen des Notepad.exe-Prozesses

  1. Öffnen Sie den Code-Editor für Form1.

  2. Doppelklicken Sie in der Entwurfsansicht auf die Schaltfläche Beenden. Damit rufen Sie die ButtonStop_Click()-Prozedur auf.

  3. Fügen Sie den folgenden Code hinzu, um alle aktuell geöffneten Instanzen von Notepad zu schließen.

    Private Sub ButtonStop_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles ButtonStop.Click
       Dim myProcesses() As Process
       Dim instance As Process
       myProcesses = Process.GetProcessesByName("Notepad")
       For Each instance In myProcesses
          instance.CloseMainWindow()
          instance.Close()
       Next
    End Sub
    
    private void ButtonStop_Click(object sender, System.EventArgs e)
    {
       System.Diagnostics.Process[] myProcesses;
       myProcesses = 
          System.Diagnostics.Process.GetProcessesByName("Notepad");
       foreach (System.Diagnostics.Process instance in myProcesses)
       {
          instance.CloseMainWindow();
          instance.Close();
       }
    }
    
  4. Speichern Sie alle Dateien, erstellen Sie anschließend die Anwendung, und führen Sie sie aus.

  5. Klicken Sie auf die Schaltfläche Prozess starten, um verschiedene Instanzen von Editor zu starten.

  6. Durch Klicken auf die Schaltfläche Prozess beenden schließen Sie alle geöffneten Instanzen von Notepad auf einmal.

  7. Schließen Sie die Form1-Anwendung.

In der nächsten Prozedur wird der Code so lange gesperrt, bis der letzte Prozess abgeschlossen ist.

So konfigurieren Sie, dass die Komponente die Beendigung des Notepad-Prozesses abwartet

  1. Öffnen Sie den Code-Editor für Form1.

  2. Bearbeiten Sie den Code, und fügen Sie eine Codezeile ein, die vor dem Schließen eines Fensters eine Pause verursacht.

    Private Sub ButtonStop_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles ButtonStop.Click
       Dim myProcesses() As Process
       Dim instance As Process
       myProcesses = Process.GetProcessesByName("Notepad")
       For Each instance In myProcesses
          instance.CloseMainWindow()
          instance.WaitForExit(3000)
          instance.Close()
       Next
    End Sub
    
    private void ButtonStop_Click(object sender, System.EventArgs e)
    {
       System.Diagnostics.Process[] myProcesses;
       myProcesses = 
          System.Diagnostics.Process.GetProcessesByName("Notepad");
       foreach (System.Diagnostics.Process instance in myProcesses)
       {
          instance.CloseMainWindow();
          instance.WaitForExit(3000);
          instance.Close();
       }
    }
    
  3. Speichern Sie alle Dateien, erstellen Sie anschließend die Anwendung, und führen Sie sie aus.

  4. Klicken Sie auf die Schaltfläche Prozess starten, um verschiedene Instanzen von Notepad zu starten.

  5. Klicken Sie, wie zuvor beschrieben, auf Prozess beenden, um die Prozesse zu schließen.

    Die Anwendung wartet nun jeweils drei Sekunden auf die Beendigung eines Prozesses, bevor die nächste Instanz des Prozesses geschlossen wird.

  6. Schließen Sie die Form1-Anwendung.

In diesem Teil der exemplarischen Vorgehensweise erstellen Sie eine neue Konsolenanwendung, die die auf dem lokalen Computer ausgeführten Prozesse abfragt und auflistet.

So listen Sie die Prozesse auf Ihrem Computer auf

  1. Erstellen Sie ein neues Konsolenanwendungsprojekt.

  2. Öffnen Sie den Code-Editor, und ändern Sie die Main-Methode, um die Prozesse auf dem Computer aufzulisten:

    Sub Main()
       Dim processes() As Process
       Dim instance As Process
       processes = Process.GetProcesses
       For Each instance In processes
          Console.WriteLine(instance.ProcessName)
       Next
       System.Threading.Thread.Sleep(5000)
    End Sub
    
    static void Main()
    {
       System.Diagnostics.Process[] processes;
       processes = System.Diagnostics.Process.GetProcesses();
       foreach (System.Diagnostics.Process instance in processes)
       {
          Console.WriteLine(instance.ProcessName);
       }
       System.Threading.Thread.Sleep(5000);
    }
    
  3. Speichern Sie alle Dateien, erstellen Sie anschließend die Anwendung, und führen Sie sie aus.

    Die Anwendung öffnet ein Konsolenfenster, das eine Liste aller zurzeit auf dem Computer ausgeführten Prozesse enthält. Durch Aufrufen von Sleep wird die Konsole vor dem Schließen fünf Sekunden lang angehalten.

    Hinweis:

    Möglicherweise treten in diesen beiden Prozeduren Ausnahmen auf, wenn Sie GetProcesses oder GetProcessesByName aufrufen und einer der zurückgegebenen Prozesse vor dem nächsten Aufruf beendet wird. In diesem Fall wird in einer Ausnahmemeldung angezeigt, dass der Prozess nicht vorhanden ist.

Siehe auch

Aufgaben

Gewusst wie: Festlegen von Prozessen

Gewusst wie: Anhalten von Prozessen

Weitere Ressourcen

Verwalten von Prozessen