Starten Sie etwas mit Prozess. Starten Sie in VB.NET

click fraud protection

Das Start Methode der Prozess object ist möglicherweise eines der am meisten unterschätzten Tools, die einem Programmierer zur Verfügung stehen. Als ein .NETZ Methode, Start hat eine Reihe von Überladungen, bei denen es sich um verschiedene Parametersätze handelt, die genau bestimmen, was die Methode tut. Mit den Überladungen können Sie nahezu alle Parameter angeben, die Sie beim Start möglicherweise an einen anderen Prozess übergeben möchten.

Was du damit machen kannst Prozess. Start ist wirklich nur durch die Prozesse begrenzt, die Sie damit verwenden können. Wenn Sie Ihre textbasierte ReadMe-Datei im Editor anzeigen möchten, ist dies so einfach wie:

Prozess. Start ("ReadMe.txt")
oder.
Prozess. Start ("Notizblock", "ReadMe.txt")

In diesem Beispiel wird davon ausgegangen, dass sich die ReadMe-Datei im selben Ordner wie das Programm befindet und dass Notepad die Standardanwendung für TXT-Dateitypen ist und sich im Pfad der Systemumgebung befindet.

Prozess. Start Ähnlich wie bei Shell Command in VB6

instagram viewer

Für Programmierer, die mit Visual Basic 6 vertraut sind, Prozess. Start ist etwas wie der VB 6 Schale Befehl. In VB 6 würden Sie Folgendes verwenden:

lngPID = Shell ("MyTextFile.txt", vbNormalFocus)

Prozess verwenden. Start

Mit diesem Code können Sie Notepad maximiert starten und eine erstellen ProcessStartInfo Objekt, das Sie für eine genauere Steuerung verwenden können:

Dim ProcessProperties As New ProcessStartInfo
ProcessProperties. FileName = "Notizblock"
ProcessProperties. Argumente = "myTextFile.txt"
ProcessProperties. WindowStyle = ProcessWindowStyle. Maximiert
Dim myProcess As Process = Process. Start (ProcessProperties)

Starten eines versteckten Prozesses

Sie können sogar einen versteckten Prozess starten.

ProcessProperties. WindowStyle = ProcessWindowStyle. Versteckt
Aber sei vorsichtig. Wenn Sie keinen weiteren Code hinzufügen, um den Prozess zu beenden, müssen Sie ihn wahrscheinlich im Task-Manager beenden. Versteckte Prozesse werden normalerweise nur mit Prozessen verwendet, die keine Benutzeroberfläche haben.

Abrufen des Namens eines Prozesses

Arbeiten mit Prozess. Start Als .NET-Objekt bietet es Ihnen viele Möglichkeiten. Sie können beispielsweise den Namen des gestarteten Prozesses abrufen. Dieser Code zeigt "Notizblock" im Ausgabefenster an:

Dim myProcess As Process = Process. Starten Sie die Konsole ("MyTextFile.txt"). WriteLine (myProcess. Vorgangsname)
Das war etwas, was du konntest nicht mach mit dem VB6 Schale Befehl, weil die neue Anwendung asynchron gestartet wurde. Verwenden von WaitForExit kann das umgekehrte Problem in .NET verursachen, da Sie einen Prozess in einem neuen Thread starten müssen, wenn Sie ihn asynchron ausführen möchten. Zum Beispiel, wenn die Komponenten in einer Form aktiv bleiben sollen, in der ein Prozess gestartet wurde und WaitForExit wurde ausgeführt. Normalerweise sind diese Komponenten nicht aktiv. Codieren Sie es und überzeugen Sie sich selbst.

Eine Möglichkeit, den Prozess zum Anhalten zu zwingen, ist die Verwendung von Töten Methode.

myProcess. Töten()

Dieser Code wartet zehn Sekunden und beendet dann den Vorgang.

Manchmal ist jedoch eine erzwungene Verzögerung erforderlich, damit der Prozess vollständig beendet werden kann, um einen Fehler zu vermeiden.

myProcess. WaitForExit (10000)
'wenn der Prozess innerhalb nicht abgeschlossen ist
'10 Sekunden, töte es
Wenn nicht myProcess. Hat dann beendet
myProcess. Töten()
End If
Einfädeln. Faden. Schlaf (1)
Konsole. WriteLine ("Editor beendet:" _
& myProcess. ExitTime & _
Umgebung. Neue Zeile & _
"Exit Code:" & _
myProcess. ExitCode)

In den meisten Fällen ist es wahrscheinlich eine gute Idee, Ihre Verarbeitung in eine zu setzen Verwenden von blockieren, um sicherzustellen, dass die vom Prozess verwendeten Ressourcen freigegeben werden.

Verwenden von myProcess als Prozess = Neuer Prozess
'Ihr Code geht hier
Beenden Sie die Verwendung

Um die Arbeit noch einfacher zu machen, gibt es sogar eine Prozess Komponente, die Sie Ihrem Projekt hinzufügen können, damit Sie viele der oben gezeigten Dinge zur Entwurfszeit anstatt zur Laufzeit ausführen können.

Dies erleichtert unter anderem das Codieren von Ereignissen, die vom Prozess ausgelöst werden, z. B. das Ereignis, wenn der Prozess beendet wurde. Sie können auch einen Handler mit folgendem Code hinzufügen:

'Erlaube dem Prozess, Ereignisse auszulösen
myProcess. EnableRaisingEvents = True
'Fügen Sie einen Exited Event Handler hinzu
AddHandler myProcess. Beendet, _
Adresse von mir. ProcessExited
Private Sub ProcessExited (ByVal-Absender als Objekt, _
ByVal e As System. EventArgs)
'Ihr Code geht hier
End Sub

Die einfache Auswahl des Ereignisses für die Komponente ist jedoch viel einfacher.

instagram story viewer