Rozpocznij coś przy użyciu procesu. Uruchom w VB.NET

The Początek metoda Proces Obiekt jest prawdopodobnie jednym z najbardziej niedocenianych narzędzi dostępnych dla programisty. Jak .NETTO metoda, Początek ma szereg przeciążeń, które są różnymi zestawami parametrów, które określają dokładnie, co robi metoda. Przeciążenia pozwalają określić prawie dowolny zestaw parametrów, które można przekazać do innego procesu podczas jego uruchamiania.

Co możesz zrobić? Proces. Początek jest tak naprawdę ograniczony tylko przez procesy, których możesz z nim używać. Jeśli chcesz wyświetlić tekstowy plik ReadMe w Notatniku, jest to tak proste jak:

Proces. Start („ReadMe.txt”)
lub.
Proces. Start („notatnik”, „ReadMe.txt”)

W tym przykładzie założono, że plik ReadMe znajduje się w tym samym folderze co program, a Notatnik jest domyślną aplikacją dla typów plików .txt i znajduje się w ścieżce środowiska systemowego.

Proces. Uruchom podobnie jak Shell Command w VB6

Dla programistów znających Visual Basic 6, Proces. Początek jest trochę jak VB 6 Muszla Komenda. W VB 6 użyłbyś czegoś takiego:

instagram viewer
lngPID = Shell („MyTextFile.txt”, vbNormalFocus)

Korzystanie z procesu. Początek

Możesz użyć tego kodu, aby uruchomić zmaksymalizowany Notatnik i utworzyć ProcessStartInfo obiekt, którego możesz użyć do bardziej precyzyjnej kontroli:

Dim ProcessProperties jako nowy ProcessStartInfo
ProcessProperties. FileName = "notatnik"
ProcessProperties. Argumenty = "myTextFile.txt"
ProcessProperties. WindowStyle = ProcessWindowStyle. Maksymalizacja
Dim myProcess As Process = Process. Uruchom (ProcessProperties)

Rozpoczęcie ukrytego procesu

Możesz nawet rozpocząć ukryty proces.

ProcessProperties. WindowStyle = ProcessWindowStyle. Ukryty
Ale bądź ostrożny. Jeśli nie dodasz więcej kodu, aby zakończyć proces, prawdopodobnie będziesz musiał go zakończyć w Menedżerze zadań. Ukryte procesy są zwykle używane tylko z procesami, które nie mają żadnego interfejsu użytkownika.

Pobieranie nazwy procesu

Praca z Proces. Początek jako obiekt .NET daje wiele możliwości. Na przykład możesz pobrać nazwę uruchomionego procesu. Ten kod wyświetli „notatnik” w oknie wyników:

Dim myProcess As Process = Process. Uruchom konsolę („MyTextFile.txt”). WriteLine (myProcess. Nazwa procesu)
To było coś, co mogłeś nie zrobić z VB6 Muszla polecenie, ponieważ uruchomiła nową aplikację asynchronicznie. Za pomocą WaitForExit może powodować odwrotny problem w .NET, ponieważ musisz uruchomić proces w nowym wątku, jeśli potrzebujesz go wykonać asynchronicznie. Na przykład, jeśli potrzebujesz, aby komponenty pozostały aktywne w formie, w której uruchomiono proces i WaitForExit został stracony. Zwykle te składniki nie będą aktywne. Skonfiguruj i przekonaj się sam.

Jednym ze sposobów wymuszenia zatrzymania procesu jest użycie Zabić metoda.

myProcess. Zabić()

Ten kod czeka przez dziesięć sekund, a następnie kończy proces.

Wymuszone opóźnienie jest jednak czasami konieczne, aby proces mógł zakończyć wychodzenie, aby uniknąć błędu.

myProcess. WaitForExit (10000)
„jeśli proces nie zakończy się w ciągu
„10 sekund, zabij to
Jeśli nie mój proces. HasExited Then
myProcess. Zabić()
End If
Gwintowanie. Wątek. Sen (1)
Konsola. WriteLine („Notepad zakończony:” _
i mój proces. ExitTime & _
Środowisko. Nowa linia & _
„Kod wyjścia:” i _
myProcess. ExitCode)

W większości przypadków dobrym pomysłem jest umieszczenie przetwarzania w pliku Za pomocą blok, aby zapewnić zwolnienie zasobów używanych przez proces.

Używanie myProcess jako procesu = nowy proces
„Twój kod jest tutaj
Zakończ używanie

Aby wszystko to było jeszcze łatwiejsze w obsłudze, istnieje nawet Proces komponent, który można dodać do projektu, dzięki czemu można wykonać wiele rzeczy pokazanych powyżej w czasie projektowania zamiast w czasie wykonywania.

Jedną z rzeczy, które to znacznie ułatwia, jest kodowanie zdarzeń wywoływanych przez proces, takich jak zdarzenie, gdy proces zakończył się. Możesz także dodać moduł obsługi za pomocą takiego kodu:

„Pozwól procesowi wywoływać zdarzenia
myProcess. EnableRaisingEvents = True
'dodaj moduł obsługi zdarzeń zakończonych
AddHandler myProcess. Opuszczono _
AddressOf Me. ProcessExited
Private Sub ProcessExited (ByVal sender As Object, _
ByVal e As System. EventArgs)
„Twój kod jest tutaj
Napis końcowy

Ale wybranie zdarzenia dla komponentu jest o wiele łatwiejsze.