Interaction.Shell(String, AppWinStyle, Boolean, Int32) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Voert een uitvoerbaar programma uit en retourneert een geheel getal met de proces-id van het programma als het nog steeds wordt uitgevoerd.
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
Parameters
- PathnamePathName
- String
Required.
String. De naam van het programma dat moet worden uitgevoerd, samen met de vereiste argumenten en opdrachtregelopties.
PathName kan ook het station en het mappad of de map bevatten.
Als u het pad naar het programma niet kent, kunt u het GetFiles pad gebruiken om het te vinden. U kunt bijvoorbeeld aanroepen My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt"), waardoor het volledige pad wordt geretourneerd van elk bestand met de naam testFile.txt overal op station C:\.
- Style
- AppWinStyle
Optional.
AppWinStyle. Een waarde die is gekozen uit de AppWinStyle stijl van het venster waarin het programma moet worden uitgevoerd. Als Style u dit weglaat, Shell gebruikt AppWinStyle.MinimizedFocusu, waarmee het programma wordt geminimaliseerd en met focus wordt gestart.
- Wait
- Boolean
Optional.
Boolean. Een waarde die aangeeft of de functie moet wachten op voltooiing Shell van het programma. Als Wait dit wordt weggelaten, Shell gebruikt u False.
- Timeout
- Int32
Optional.
Integer. Het aantal milliseconden dat moet worden gewacht op voltooiing als Wait dat het is True. Als Timeout u dit weglaat, Shell gebruikt u -1, wat betekent dat er geen time-out is en Shell niet wordt geretourneerd totdat het programma is voltooid. Dus als u deze weglaat Timeout of instelt op -1, is het mogelijk dat Shell u nooit de controle over uw programma kunt retourneren.
Retouren
Een geheel getal met de proces-id van het programma als het nog steeds wordt uitgevoerd. 0 als het programma al is uitgevoerd.
Uitzonderingen
Style ligt niet binnen het bereik van 0 tot en met 9.
Shell kan het PathName bestand niet vinden.
PathName is Nothing.
Voorbeelden
In het volgende voorbeeld wordt de Shell functie gebruikt om een toepassing uit te voeren die is opgegeven door de gebruiker.
AppWinStyle.NormalFocus Als u opgeeft als het tweede argument, wordt de toepassing in normale grootte geopend en krijgt deze de focus.
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.
Opmerkingen
De retourwaarde van de Shell functie is afhankelijk van of het programma dat is PathName benoemd, nog steeds wordt uitgevoerd wanneer Shell de functie wordt geretourneerd. Als u instelt op WaitTrue en het programma is voltooid voordat de time-out verloopt, Shell wordt nul geretourneerd. Als de time-out verloopt of als u deze Falseweglaat Wait of instelt op, Shell wordt de proces-id van het programma geretourneerd. De proces-id is een uniek nummer waarmee het actieve programma wordt geïdentificeerd.
Kan niet starten
Als de Shell functie het benoemde programma niet kan starten, treedt er een FileNotFoundException fout op. Dit kan bijvoorbeeld gebeuren wanneer u probeert een 16-bits programma uit te voeren, zoals command.com, vanuit een toepassing met behulp van System.Windows.Forms. Voor een tijdelijke oplossing kunt u een 32-bits programma uitvoeren dat het gewenste 16-bits programma aanroept. In het geval van command.com, kunt u als alternatief uitvoeren cmd.exe .
Wachten op voltooiing
Shell De functie voert standaard het programma asynchroon uit. Dit betekent dat een programma dat met de Shell functie is gestart, niet kan worden uitgevoerd voordat de instructies na de Shell functie worden uitgevoerd. Als u wilt wachten totdat het programma is voltooid voordat u doorgaat, stelt u deze optie in WaitTrue.
De afsluitcode bepalen
Een proces kan een afsluitcode retourneren wanneer deze wordt beëindigd. U kunt deze afsluitcode echter niet Shell ophalen, omdat Shell deze nul retourneert als er wordt gewacht op beëindiging, en ook omdat het proces wordt uitgevoerd in een ander object van Shell.
Als u de afsluitcode uit een proces wilt ophalen, moet u uw eigen code schrijven om het proces te starten en te wachten op beëindiging. In het volgende voorbeeld ziet u hoe u een proces start, wacht totdat het proces is beëindigd en hoe u de afsluitcode ophaalt.
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))
De bestandsspecificatie beveiligen
U moet altijd het volledige pad en de bestandsspecificatie tussen aanhalingstekens plaatsen, zoals in het volgende voorbeeld wordt weergegeven.
ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000)
Elk paar aangrenzende dubbele aanhalingstekens (" ") binnen de letterlijke tekenreeks wordt geïnterpreteerd als één dubbel aanhalingsteken in de tekenreeks. Daarom geeft het voorgaande voorbeeld de volgende tekenreeks weer voor de Shell functie:
"C:\Program Files\display.exe" -a -q
Als u het pad niet tussen aanhalingstekens hebt geplaatst, zoekt Windows naar een bestand met de naam Program.exe in de map C:\ in plaats van display.exe in de map C:\Program Files.
Important
Als u het pad en de bestandsspecificatie niet tussen aanhalingstekens plaatst, bestaat er een beveiligingsrisico als de bestandsnaam of een padknooppunt spaties bevat. In het voorgaande voorbeeld bevat het padknooppunt \Program Files een spatie. Als de specificatie niet binnen aanhalingstekens en een programma met de naam Program.exe was geïnstalleerd in C:\, bijvoorbeeld door illegale manipulatie, zou Windows het uitvoeren in plaats van display.exe.
Important
Voor de Shell functie is een niet-beheerde codemachtiging vereist, wat van invloed kan zijn op de uitvoering ervan in gedeeltelijke vertrouwenssituaties. Zie en Machtigingen voor codetoegang voor meer informatieSecurityPermission.