Interaction.Shell(String, AppWinStyle, Boolean, Int32) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Führt ein ausführbares Programm aus und gibt eine ganze Zahl zurück, die die Prozess-ID des Programms enthält, wenn sie noch ausgeführt wird.
public static int Shell(string Pathname, Microsoft.VisualBasic.AppWinStyle Style = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, bool Wait = false, int Timeout = -1);
public static int Shell(string PathName, Microsoft.VisualBasic.AppWinStyle Style = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, bool Wait = false, int Timeout = -1);
static member Shell : string * Microsoft.VisualBasic.AppWinStyle * bool * int -> int
static member Shell : string * Microsoft.VisualBasic.AppWinStyle * bool * int -> int
Public Function Shell (Pathname As String, Optional Style As AppWinStyle = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, Optional Wait As Boolean = false, Optional Timeout As Integer = -1) As Integer
Public Function Shell (PathName As String, Optional Style As AppWinStyle = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, Optional Wait As Boolean = false, Optional Timeout As Integer = -1) As Integer
Parameter
- PathnamePathName
- String
Required.
String. Name des auszuführenden Programms zusammen mit allen erforderlichen Argumenten und Befehlszeilenoptionen.
PathName kann auch das Laufwerk und den Verzeichnispfad oder -ordner enthalten.
Wenn Sie den Pfad zum Programm nicht kennen, können Sie ihn GetFiles verwenden, um ihn zu finden. Sie können z. B. aufrufen My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt"), was den vollständigen Pfad jeder Datei zurückgibt, die an einer beliebigen Stelle auf Laufwerk C:\benannt ist testFile.txt .
- Style
- AppWinStyle
Dies ist optional.
AppWinStyle. Ein Wert, der aus der AppWinStyle Angabe der Formatvorlage des Fensters ausgewählt wird, in dem das Programm ausgeführt werden soll. Wenn Style sie nicht angegeben wird, wird verwendetAppWinStyle.MinimizedFocus, Shell wodurch das Programm minimiert und mit Dem Fokus gestartet wird.
- Wait
- Boolean
Dies ist optional.
Boolean. Ein Wert, der angibt, ob die Shell Funktion auf den Abschluss des Programms warten soll. Wenn Wait dieser Wert nicht angegeben wird, Shell wird verwendet False.
- Timeout
- Int32
Dies ist optional.
Integer. Die Anzahl der Millisekunden, die auf den Abschluss warten sollen, falls Wait angegeben True. Wenn Timeout nicht angegeben wird, Shell wird -1 verwendet, was bedeutet, dass kein Timeout vorhanden ist und Shell erst nach Abschluss des Programms zurückgegeben wird. Wenn Sie es daher weglassen Timeout oder auf -1 festlegen, ist es möglich, dass Shell die Steuerung möglicherweise niemals an Ihr Programm zurückgegeben wird.
Gibt zurück
Eine ganze Zahl, die die Prozess-ID des Programms enthält, wenn sie noch ausgeführt wird. 0, wenn die Ausführung des Programms bereits abgeschlossen ist.
Ausnahmen
Style liegt nicht innerhalb des Bereichs 0 bis einschließlich 9.
Shell Die PathName Datei kann nicht gefunden werden.
PathName ist Nothing.
Beispiele
Im folgenden Beispiel wird die Shell Funktion verwendet, um eine vom Benutzer angegebene Anwendung auszuführen. Wenn AppWinStyle.NormalFocus Sie als zweites Argument angeben, wird die Anwendung in normaler Größe geöffnet und erhält den Fokus.
Dim procID As Integer
' Run calculator.
procID = Shell("C:\Windows\system32\calc.exe", AppWinStyle.NormalFocus)
' The preceding path is for Windows XP.
' The Windows 2000 path is C:\WINNT\system32\calc.exe.
Hinweise
Der Rückgabewert der Shell Funktion hängt davon ab, ob das benannte PathName Programm bei Shell Rückgaben noch ausgeführt wird. Wenn Sie festlegen WaitTrue , und das Programm endet, bevor das Timeout abläuft, Shell wird Null zurückgegeben. Wenn das Timeout abläuft oder wenn Sie es Falseweglassen Wait oder auf festlegen, Shell gibt die Prozess-ID des Programms zurück. Die Prozess-ID ist eine eindeutige Nummer, die das ausgeführte Programm identifiziert.
Fehler beim Starten
Wenn die Shell Funktion das benannte Programm nicht starten kann, tritt ein FileNotFoundException Fehler auf. Dies kann beispielsweise passieren, wenn Sie versuchen, ein 16-Bit-Programm auszuführen, z. B. command.com, aus einer Anwendung, die System.Windows.Forms verwendet. Für eine Problemumgehung können Sie ein 32-Bit-Programm ausführen, das das gewünschte 16-Bit-Programm aufruft. Im Fall von command.com, können Sie als Alternative ausführen cmd.exe .
Warten auf Abschluss
Standardmäßig führt die Shell Funktion das Programm asynchron aus. Dies bedeutet, dass die Ausführung eines programms, das mit der Shell Funktion gestartet wurde, möglicherweise nicht beendet wird, bevor die Anweisungen nach der Shell Funktion ausgeführt werden. Wenn Sie warten möchten, bis das Programm abgeschlossen ist, bevor Sie fortfahren, legen Sie den Satzes
Bestimmen des Ausgangscodes
Ein Prozess kann einen Beendigungscode zurückgeben, wenn er beendet wird. Sie können diesen Beendigungscode jedoch nicht Shell abrufen, da Shell null zurückgegeben wird, wenn er auf die Beendigung wartet, und auch, weil der Prozess in einem anderen Objekt ausgeführt wird.Shell
Um den Beendigungscode aus einem Prozess abzurufen, müssen Sie ihren eigenen Code schreiben, um den Prozess zu initiieren und auf die Beendigung zu warten. Im folgenden Beispiel wird gezeigt, wie sie einen Prozess initiieren, warten, bis er beendet wird, und den Ausgangscode abrufen.
Dim procID As Integer
Dim newProc As Diagnostics.Process
newProc = Diagnostics.Process.Start("C:\WINDOWS\NOTEPAD.EXE")
procID = newProc.Id
newProc.WaitForExit()
Dim procEC As Integer = -1
If newProc.HasExited Then
procEC = newProc.ExitCode
End If
MsgBox("Process with ID " & CStr(ProcID) & _
" terminated with exit code " & CStr(procEC))
Schützen der Dateispezifikation
Sie sollten immer den gesamten Pfad und die Dateispezifikation in Anführungszeichen setzen, wie im folgenden Beispiel gezeigt.
ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000)
Jedes Paar angrenzender doppelter Anführungszeichen (" ") innerhalb des Zeichenfolgeliterals wird als ein doppeltes Anführungszeichen in der Zeichenfolge interpretiert. Daher stellt das vorangehende Beispiel die folgende Zeichenfolge für die Shell Funktion dar:
"C:\Program Files\display.exe" -a -q
Wenn der Pfad nicht in Anführungszeichen eingeschlossen wurde, würde Windows nach einer Datei namens Program.exe im Verzeichnis "C:\" suchen, statt display.exe im Verzeichnis "C:\Programme".
Important
Wenn Sie den Pfad und die Dateispezifikation nicht in Anführungszeichen einschließen, besteht ein Sicherheitsrisiko, wenn der Dateiname oder ein Pfadknoten Leerzeichen enthält. Im vorherigen Beispiel enthält der Pfadknoten \Program Files ein Leerzeichen. Wenn sich die Spezifikation nicht in Anführungszeichen befand und ein Programm mit dem Namen Program.exe in C:\installiert wurde, z. B. durch unerlaubte Manipulationen, würde Windows sie anstelle von display.exe ausführen.
Important
Die Shell Funktion erfordert nicht verwaltete Codeberechtigungen, die sich auf die Ausführung in teilweise vertrauenswürdigen Situationen auswirken können. Weitere Informationen finden Sie unter SecurityPermission den Berechtigungen für den Codezugriff.