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.MinimizedFocus
ná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 False
se .
- Timeout
- Int32
Nepovinný parametr. Integer
. Počet milisekund, které se mají čekat na dokončení, pokud Wait
je True
hodnota . 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.com
spustit 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 True
hodnotu .
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.exe
spustil 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.