Interaction.Shell(String, AppWinStyle, Boolean, Int32) Metod

Definition

Kör ett körbart program och returnerar ett heltal som innehåller programmets process-ID om det fortfarande körs.

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

Parametrar

PathNamePathname
String

Required. String. Namnet på programmet som ska köras, tillsammans med nödvändiga argument och kommandoradsväxlar. PathName kan även innehålla enheten och katalogsökvägen eller mappen. Om du inte känner till sökvägen till programmet kan du använda GetFiles för att hitta den. Du kan till exempel anropa My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt"), som returnerar den fullständiga sökvägen för varje fil med namnet testFile.txt var som helst på enhet C:\.

Style
AppWinStyle

Optional. AppWinStyle. Ett värde som valts från det AppWinStyle angivna formatet för fönstret där programmet ska köras. Om Style utelämnas Shell använder använder AppWinStyle.MinimizedFocus, som startar programmet minimerat och med fokus.

Wait
Boolean

Optional. Boolean. Ett värde som anger om Shell funktionen ska vänta tills programmet har slutförts. Om Wait utelämnas Shell använder .False

Timeout
Int32

Optional. Integer. Antalet millisekunder att vänta på slutförande om Wait är True. Om Timeout utelämnas Shell använder -1, vilket innebär att det inte finns någon tidsgräns och Shell inte returneras förrän programmet har slutförts. Om du utelämnar Timeout eller ställer in det på -1 är det därför möjligt att det Shell aldrig returnerar kontroll till ditt program.

Returer

Ett heltal som innehåller programmets process-ID om det fortfarande körs. 0 om programmet redan har körts.

Undantag

Style ligger inte inom intervallet 0 till och med 9, inklusive.

Shell kan inte hitta PathName filen.

PathName är Nothing.

Exempel

I följande exempel används Shell funktionen för att köra ett program som angetts av användaren. Om du anger AppWinStyle.NormalFocus som det andra argumentet öppnas programmet i normal storlek och fokuserar på det.

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.

Kommentarer

Returvärdet för Shell funktionen beror på om programmet med namnet i PathName fortfarande körs när Shell det returneras. Om du anger Wait till True och programmet avslutas innan tidsgränsen går ut returnerar Shell noll. Om tidsgränsen upphör att gälla, eller om du utelämnar Wait eller anger den till False, Shell returneras programmets process-ID. Process-ID:t är ett unikt nummer som identifierar det program som körs.

Det gick inte att starta

Om funktionen Shell inte kan starta det namngivna programmet uppstår ett FileNotFoundException fel. Detta kan till exempel inträffa när du försöker köra ett 16-bitarsprogram, till exempel command.com, från ett program som använder System.Windows.Forms. För en lösning kan du köra ett 32-bitarsprogram som anropar önskat 16-bitarsprogram. När det gäller command.comkan du köra cmd.exe som ett alternativ.

Väntar på slutförande

Som standard Shell kör funktionen programmet asynkront. Det innebär att ett program som startas med Shell funktionen kanske inte slutför körningen innan instruktionerna efter Shell funktionen körs. Om du vill vänta tills programmet har slutförts innan du fortsätter anger Wait du till True.

Fastställa slutkoden

En process kan returnera en slutkod när den avslutas. Du kan dock inte använda Shell för att hämta den här slutkoden, eftersom Shell returnerar noll om den väntar på avslutning och även för att processen körs i ett annat objekt än Shell.

Om du vill hämta slutkoden från en process måste du skriva din egen kod för att initiera processen och vänta tills den avslutas. I följande exempel visas hur du initierar en process, väntar tills den avslutas och hämtar slutkoden.

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))

Skydda filspecifikationen

Du bör alltid omsluta hela sökvägen och filspecifikationen inom citattecken, vilket visas i följande exempel.

ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000)

Varje par med intilliggande dubbla citattecken (" ") i strängliteralen tolkas som ett dubbelt citattecken i strängen. I föregående exempel visas därför följande sträng för Shell funktionen:

"C:\Program Files\display.exe" -a -q

Om du inte har sökvägen inom citattecken letar Windows efter en fil med namnet Program.exe i katalogen C:\ i stället för display.exe i katalogen C:\Program Files.

Important

Om du inte omger sökvägen och filspecifikationen inom citattecken finns det en säkerhetsrisk om filnamnet eller en sökvägsnod innehåller blanksteg. I föregående exempel innehåller sökvägsnoden \Program Files ett blanksteg. Om specifikationen inte fanns inom citattecken och ett program med namnet Program.exe hade installerats i C:\, till exempel genom olaglig manipulering, skulle Windows köra den i stället för display.exe.

Important

Funktionen Shell kräver ohanterad kodbehörighet, vilket kan påverka dess körning i situationer med partiellt förtroende. Mer information finns i SecurityPermission och Kodåtkomstbehörigheter.

Gäller för

Se även