Interaction.Shell(String, AppWinStyle, Boolean, Int32) Méthode

Définition

Exécute un programme exécutable et retourne un entier contenant l’ID de processus du programme s’il est toujours en cours d’exécution.

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ètres

PathNamePathname
String

Obligatoire. String. Nom du programme à exécuter, ainsi que tous les arguments requis et commutateurs de ligne de commande. PathName peut également inclure le lecteur et le chemin ou le dossier du répertoire. Si vous ne connaissez pas le chemin d’accès au programme, vous pouvez l’utiliser GetFiles pour le localiser. Par exemple, vous pouvez appeler My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt"), qui retourne le chemin complet de chaque fichier nommé testFile.txt n’importe où sur le lecteur C :\.

Style
AppWinStyle

Optional. AppWinStyle. Valeur choisie dans le AppWinStyle style de la fenêtre dans laquelle le programme doit s’exécuter. S’il Style est omis, Shell utilise AppWinStyle.MinimizedFocus, qui démarre le programme réduit et avec le focus.

Wait
Boolean

Optional. Boolean. Valeur indiquant si la Shell fonction doit attendre l’achèvement du programme. Si Wait elle est omise, Shell utilise False.

Timeout
Int32

Optional. Integer. Nombre de millisecondes à attendre la fin si Wait c’est Truele cas . S’il Timeout est omis, Shell utilise -1, ce qui signifie qu’il n’y a pas de délai d’expiration et Shell ne retourne pas tant que le programme n’est pas terminé. Par conséquent, si vous omettez Timeout ou définissez-le sur -1, il est possible que Shell le contrôle ne soit jamais retourné à votre programme.

Retours

Entier contenant l’ID de processus du programme s’il est toujours en cours d’exécution. 0 si le programme a déjà terminé l’exécution.

Exceptions

Style n’est pas compris entre 0 et 9 inclus.

Shell impossible de trouver le PathName fichier.

PathName a la valeur Nothing.

Exemples

L’exemple suivant utilise la Shell fonction pour exécuter une application spécifiée par l’utilisateur. La spécification AppWinStyle.NormalFocus du deuxième argument ouvre l’application en taille normale et lui donne le 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.

Remarques

La valeur de retour de la Shell fonction dépend du fait que le programme nommé dans PathName est toujours en cours d’exécution lors Shell du retour. Si vous définissez Wait sur True et que le programme se termine avant l’expiration du délai d’expiration, Shell retourne zéro. Si le délai d’expiration expire ou si vous l’omettez Wait ou le définissez Falsesur , Shell retourne l’ID de processus du programme. L’ID de processus est un nombre unique qui identifie le programme en cours d’exécution.

Échec du démarrage

Si la Shell fonction ne peut pas démarrer le programme nommé, une FileNotFoundException erreur se produit. Cela peut se produire, par exemple, lorsque vous tentez d’exécuter un programme 16 bits, tel que command.com, à partir d’une application utilisant System.Windows.Forms. Pour une solution de contournement, vous pouvez exécuter un programme 32 bits qui appelle le programme 16 bits souhaité. Dans le cas de command.com, vous pouvez vous exécuter cmd.exe comme alternative.

En attente d’achèvement

Par défaut, la Shell fonction exécute le programme de façon asynchrone. Cela signifie qu’un programme démarré avec la Shell fonction peut ne pas terminer l’exécution avant que les instructions suivantes la Shell fonction soient exécutées. Si vous souhaitez attendre la fin du programme avant de continuer, définissez sur WaitTrue.

Détermination du code de sortie

Un processus peut retourner un code de sortie lorsqu’il se termine. Toutefois, vous ne pouvez pas utiliser Shell pour récupérer ce code de sortie, car Shell retourne zéro s’il attend l’arrêt, et également parce que le processus s’exécute dans un objet différent de .Shell

Pour récupérer le code de sortie d’un processus, vous devez écrire votre propre code pour lancer le processus et attendre l’arrêt. L’exemple suivant montre comment lancer un processus, attendre qu’il se termine et récupérer son code de sortie.

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

Protection de la spécification du fichier

Vous devez toujours placer l’intégralité du chemin d’accès et de la spécification du fichier entre guillemets, comme l’illustre l’exemple suivant.

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

Chaque paire de guillemets doubles adjacents (" ") dans le littéral de chaîne est interprétée comme un guillemet double dans la chaîne. Par conséquent, l’exemple précédent présente la chaîne suivante à la Shell fonction :

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

Si vous n’avez pas le chemin entre guillemets, Windows recherchez un fichier appelé Program.exe dans le répertoire C :\, au lieu de display.exe dans le répertoire C :\Program Files.

Important

Si vous ne placez pas le chemin d’accès et la spécification de fichier entre guillemets, il existe un risque de sécurité si le nom de fichier ou un nœud de chemin d’accès contient des espaces. Dans l’exemple précédent, le nœud \Program Files de chemin d’accès inclut un espace. Si la spécification n’était pas entre guillemets et qu’un programme nommé Program.exe avait été installé dans C :\, par exemple par falsification illicite, Windows l’exécuterait au lieu de display.exe.

Important

La Shell fonction nécessite une autorisation de code non managée, ce qui peut affecter son exécution dans des situations de confiance partielle. Pour plus d’informations, consultez SecurityPermission et autorisations d’accès au code.

S’applique à

Voir aussi