Die flexible und leistungsstarke Programmiersprache Visual Basic. NET, eines der speziell entwickelten Werkzeuge für die Entwicklung von Anwendungen für die Microsoft. NET-Plattform, ermöglicht es Ihnen, alle ihre Fähigkeiten voll auszuschöpfen. Insbesondere die Komponenten des System. Diagnostics-Namespace ermöglichen Ihnen die Interaktion mit Prozessen, Ereignisprotokollen und Leistungsindikatoren. Sie können beispielsweise ein Programm aus Visual Basic mit der Process-Klasse schließen.
Notwendig
Microsoft Visual Studio
Anweisungen
Schritt 1
Importieren Sie die Namespaces System, System. Diagnostics und System. Threading. Fügen Sie am Anfang des Moduls die folgenden Codezeilen hinzu:
Importsystem
Importiert System. Diagnostics
Importiert System. Threading
Dies dient nur der Bequemlichkeit der Verwendung der Komponenten, die diesen Namespaces zugeordnet sind.
Schritt 2
Rufen Sie die Daten des zu schließenden Prozesses ab. Verwenden Sie das System. Diagnostics. Process-Klassenobjekt. Deklarieren Sie eine Variable dieser Klasse:
Dim oProc als Prozess
Verwenden Sie dann eine Methode, um den erforderlichen Prozess zu finden.
Schritt 3
Wenn das Programm, das in Zukunft geschlossen werden muss, von der zu entwickelnden Anwendung gestartet wird, dann speichern Sie einfach das Objekt, das beim Start von der Start-Methode zurückgegeben wird:
oProc = Process. Start ("app.exe")
Schritt 4
Wenn Sie einen Prozess mit einem bekannten Bezeichner schließen müssen, verwenden Sie die statische GetProcessById-Methode der Process-Klasse, um das entsprechende Objekt abzurufen:
oProc = Process. GetProcessById (nID)
Dabei ist nID die numerische Kennung des Prozesses.
Schritt 5
Wenn nur einige der Merkmale des Zielprozesses bekannt sind, suchen Sie danach. Rufen Sie die Liste der auf dem lokalen Computer ausgeführten Prozesse als Array von Objekten der Process-Klasse ab. Verwenden Sie die Methoden GetProcesses (gibt alle Prozesse zurück) oder GetProcessesByName (nur Prozesse mit dem angegebenen Namen):
Dim aoAllProcesses As Process () = Process. GetProcesses ()
Dim aoProcsByName As Process () = Process. GetProcessesByName ("app.exe")
Listen Sie die Array-Objekte mit einer Schleife auf:
Dim oProc als Prozess
Für jeden oProc in aoAllProcesses
'Aktionen auf oProc
Nächste
Durchlaufen Sie die Eigenschaften MainModule, MainWindowTitle, ProcessName usw. um das gewünschte Objekt zu finden.
Schritt 6
Versuchen Sie, das Programm zu beenden, indem Sie eine Schließmeldung an das Hauptfenster senden. Rufen Sie die CloseMainWindow-Methode des Objekts auf, das dem Zielprozess entspricht. Warten Sie gegebenenfalls, bis die Anwendung abgeschlossen ist, indem Sie WaitForExit aufrufen, zum Beispiel:
oProc. CloseMainWindow ()
oProc. WaitForExit ()
Diese Methode garantiert nicht die Beendigung des Programms, da die Fensterschließmeldung häufig verarbeitet wird und ignoriert werden kann.
Schritt 7
Warten Sie nach dem Aufruf von CloseMainWindow kurz, um sicherzustellen, dass das Programm beendet wird. Verwenden Sie die Sleep-Methode der Thread-Klasse. Überprüfen Sie dann den Status des Prozesses, indem Sie die HasExited-Eigenschaft untersuchen, und rufen Sie, wenn er noch nicht abgeschlossen ist, die Kill-Methode auf:
Gewinde. Schlaf (6000)
oProz. Aktualisieren ()
Wenn nicht oProc. HasExited Then
oProc. Kill ()
Ende Wenn
Falls gewünscht, können Sie den Status des Prozesses in einer Schleife abfragen und den Benutzer regelmäßig auffordern, die Anwendung zu beenden, ohne Daten zu speichern. Und nur, wenn Sie zustimmen, Kill anzurufen.
Schritt 8
Geben Sie Systemressourcen frei, nachdem das Programm mit der Close-Methode beendet wurde:
oProz. Schließen ()
Schritt 9
Um unerwartete Fehler während der Anwendungsausführung zu vermeiden, platzieren Sie den gesamten Algorithmus zum Schließen des Programms in einem Try-Catch-End-Try-Block. Implementieren Sie bei Bedarf eine vollständige Ausnahmebehandlung mit Diagnosemeldungen.