Interaction.Shell(String, AppWinStyle, Boolean, Int32) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Spustí spustitelný program a vrátí celé číslo obsahující ID procesu programu, pokud je stále spuštěný.
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
Parametry
- PathNamePathname
- String
Povinná hodnota.
String. Název programu, který se má spustit, spolu s požadovanými argumenty a přepínači příkazového řádku.
PathName může také obsahovat jednotku a cestu k adresáři nebo složku.
Pokud neznáte cestu k programu, můžete ho vyhledat pomocí .GetFiles Můžete například volat My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt"), který vrátí úplnou cestu ke každému souboru s názvem testFile.txt kdekoli na jednotce C:\.
- Style
- AppWinStyle
Nepovinný parametr.
AppWinStyle. Hodnota zvolená z AppWinStyle určující styl okna, ve kterém má program běžet. Pokud Style je vynechán, Shell použije AppWinStyle.MinimizedFocusnástroj , který spustí program minimalizovaný a s fokusem.
- Wait
- Boolean
Nepovinný parametr.
Boolean. Hodnota označující, zda Shell má funkce čekat na dokončení programu. Pokud Wait je vynechán, Shell použije Falsese .
- Timeout
- Int32
Nepovinný parametr.
Integer. Počet milisekund, které se mají čekat na dokončení, pokud Wait je Truehodnota . Pokud Timeout je vynechán, Shell použije se hodnota -1, což znamená, že nedojde k vypršení časového limitu a Shell nevrátí se, dokud program nedokončí. Pokud ho tedy vynecháte Timeout nebo nastavíte na hodnotu -1, je možné, že Shell řízení programu nikdy nevrátíte.
Návraty
Celé číslo obsahující ID procesu programu, pokud je stále spuštěný. 0, pokud program již dokončil provádění.
Výjimky
Style není v rozsahu 0 až 9 (včetně).
Shell Aplikace nemůže najít PathName soubor.
PathName je Nothing.
Příklady
Následující příklad používá Shell funkci ke spuštění aplikace určené uživatelem. Když AppWinStyle.NormalFocus jako druhý argument zadáte, otevře se aplikace v normální velikosti a získá jí 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.
Poznámky
Vrácená hodnota Shell funkce závisí na tom, jestli program s názvem v PathName se při Shell vrácení stále spouští. Pokud nastavíte Wait na True a program se dokončí před vypršením časového limitu, Shell vrátí se nula. Pokud časový limit vyprší nebo pokud ho vynecháte Wait nebo nastavíte na False, Shell vrátí ID procesu programu. ID procesu je jedinečné číslo, které identifikuje spuštěný program.
Chyba spuštění
Shell Pokud funkce nemůže spustit pojmenovaný program, FileNotFoundException dojde k chybě. K tomu může dojít například při pokusu o spuštění 16bitového programu, například command.com, z aplikace pomocí System.Windows.Forms. Jako alternativní řešení můžete spustit 32bitový program, který volá požadovaný 16bitový program. V případě můžete jako alternativu command.comspustit cmd.exe příkaz .
Čekání na dokončení
Ve výchozím nastavení Shell funkce spouští program asynchronně. To znamená, že program spuštěný s Shell funkcí nemusí dokončit provádění před provedením příkazů následujících za Shell funkcí. Pokud chcete počkat na dokončení programu, než budete pokračovat, nastavte Wait na Truehodnotu .
Určení ukončovacího kódu
Proces může po ukončení vrátit ukončovací kód . Nelze však použít Shell k načtení tohoto ukončovacího kódu, protože Shell pokud čeká na ukončení, vrátí nulu a také proto, že proces běží v jiném objektu než Shell.
Pokud chcete načíst ukončovací kód z procesu, musíte napsat vlastní kód, který zahájí proces a počká na ukončení. Následující příklad ukazuje, jak zahájit proces, počkat na jeho ukončení a načíst jeho ukončovací kód.
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))
Ochrana specifikace souboru
Celou cestu a specifikaci souboru byste měli vždy uzavřít do uvozovek, jak ukazuje následující příklad.
ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000)
Každá dvojice sousedních dvojitých uvozovek (" ") v řetězcovém literálu je interpretována jako jedna dvojitá uvozovka v řetězci. Proto předchozí příklad představuje funkci následující řetězec Shell :
"C:\Program Files\display.exe" -a -q
Pokud byste cestu neměli uzavřenou v uvozovkách, systém Windows by hledal soubor s názvem Program.exe v adresáři C:\ místo display.exe v adresáři C:\Program Files.
Důležité
Pokud cestu a specifikaci souboru neuzavřete do uvozovek, znamená to bezpečnostní riziko, pokud název souboru nebo uzel cesty obsahuje mezery. V předchozím příkladu obsahuje uzel \Program Files cesty mezeru. Pokud by specifikace nebyla v uvozovkách a program s názvem Program.exe byl nainstalován v C:\, například neoprávněnou manipulací, systém Windows by ho display.exespustil místo .
Důležité
Funkce Shell vyžaduje oprávnění nespravovaného kódu, což může mít vliv na její provádění v situacích s částečnou důvěryhodností. Další informace najdete v tématech SecurityPermission a Přístupová oprávnění ke kódu.