Interaction.Shell(String, AppWinStyle, Boolean, Int32) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Futtat egy végrehajtható programot, és visszaad egy egész számot, amely tartalmazza a program folyamatazonosítóját, ha még fut.
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
Paraméterek
- PathNamePathname
- String
Kötelező.
String. A végrehajtandó program neve a szükséges argumentumokkal és parancssori kapcsolókkal együtt.
PathName A meghajtót és a könyvtár elérési útját vagy mappáját is tartalmazhatja.
Ha nem ismeri a program elérési útját, a segítségével GetFiles megkeresheti. Meghívhat például egy hívást My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt"), amely a C:\meghajtón bárhol elnevezett testFile.txt összes fájl teljes elérési útját adja vissza.
- Style
- AppWinStyle
Optional.
AppWinStyle. A program futtatásához használt ablak stílusának megadásából AppWinStyle kiválasztott érték. Ha Style nincs megadva, használja Shella AppWinStyle.MinimizedFocus programot kis méretűre és fókuszba helyezve.
- Wait
- Boolean
Optional.
Boolean. Egy érték, amely jelzi, hogy a Shell függvénynek várnia kell-e a program befejezésére. Ha Wait nincs megadva, Shell használja Falsea .
- Timeout
- Int32
Optional.
Integer. A befejezésre váró ezredmásodpercek száma, ha Wait az True. Ha Timeout nincs megadva, Shell a -1 értéket használja, ami azt jelenti, hogy nincs időtúllépés, és Shell nem tér vissza addig, amíg a program be nem fejeződik. Ezért ha kihagyja Timeout vagy -1 értékre állítja, lehetséges, hogy Shell soha nem adja vissza a vezérlőt a programnak.
Válaszok
A program folyamatazonosítóját tartalmazó egész szám, ha még mindig fut. 0, ha a program már befejezte a végrehajtást.
Kivételek
Style nem a 0–9 tartományon belül van, beleértve a
Shell A fájl nem található PathName .
PathName az Nothing.
Példák
Az alábbi példa a Shell felhasználó által megadott alkalmazás futtatásához használja a függvényt.
AppWinStyle.NormalFocus A második argumentum megadása normál méretben nyitja meg az alkalmazást, és a fókuszt adja meg.
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.
Megjegyzések
A függvény visszatérési Shell értéke attól függ, hogy a benevezett PathName program továbbra is végrehajtja-e a visszatérést Shell . Ha be van állítva Wait , True és a program befejeződik az időtúllépés lejárta előtt, Shell nullát ad vissza. Ha az időtúllépés lejár, vagy kihagyja Wait vagy be van állítva False, Shell a program folyamatazonosítóját adja vissza. A folyamatazonosító egy egyedi szám, amely azonosítja a futó programot.
Sikertelen indítás
Ha a Shell függvény nem tudja elindítani a megnevezett programot, FileNotFoundException hiba történik. Ez például akkor fordulhat elő, ha egy 16 bites programot( például command.com) próbál futtatni egy alkalmazásból System.Windows.Forms használatával. Kerülő megoldásként futtathat egy 32 bites programot, amely meghívja a kívánt 16 bites programot. Ebben az esetben command.comalternatívaként is futtatható cmd.exe .
Várakozás a befejezésre
Alapértelmezés szerint a Shell függvény aszinkron módon futtatja a programot. Ez azt jelenti, hogy előfordulhat, hogy a Shell függvényrel indított programok végrehajtása nem fejeződik be a Shell függvényt követő utasítások végrehajtása előtt. Ha a folytatás előtt meg szeretné várni, hogy a program befejeződjön, állítsa be a következőt WaitTrue: .
A kilépési kód meghatározása
Egy folyamat vissza tud térni egy kilépési kódot , amikor leáll. A kilépési kód lekérésére azonban nem használható Shell , mert Shell nulla értéket ad vissza, ha a leállításra vár, és azért is, mert a folyamat egy másik objektumban Shellfut.
Ha le szeretné kérni a kilépési kódot egy folyamatból, meg kell írnia a saját kódját, hogy elindítsa a folyamatot, és várja meg a befejezést. Az alábbi példa bemutatja, hogyan kezdeményezhet egy folyamatot, várhatja meg, amíg leáll, és lekéri a kilépési kódját.
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))
A fájlspecifikáció védelme
A teljes elérési utat és fájlspecifikációt mindig idézőjelek közé kell foglalnia, ahogy az alábbi példa is mutatja.
ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000)
A sztringkonstanson belül a szomszédos idézőjelek (" ") párja egy dupla idézőjelként van értelmezve a sztringben. Ezért az előző példa a következő sztringet mutatja be a Shell függvénynek:
"C:\Program Files\display.exe" -a -q
Ha az elérési utat nem idézőjelek közé zárta, Windows a C:\ könyvtárban Program.exe nevű fájlt keresne a C:\Program Files könyvtárban display.exe helyett.
Important
Ha nem idézőjelek közé foglalja az elérési utat és a fájl specifikációját, biztonsági kockázatot jelent, ha a fájlnév vagy az elérésiút-csomópont szóközöket tartalmaz. Az előző példában az elérési út csomópontja \Program Files tartalmaz egy szóközt. Ha a specifikáció nem idézőjelek között volt, és egy Program.exe nevű program lett telepítve a C:\-ban, például tiltott illetéktelen módosítással, Windows display.exe helyett hajtaná végre.
Important
A Shell függvény nem felügyelt kódengedélyt igényel, ami befolyásolhatja a részleges megbízhatósági helyzetekben történő végrehajtását. További információkért lásd SecurityPermission és kódhozzáférés engedélyeit.