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

Définition

Exécute un programme exécutable et retourne un entier contenant l'ID du 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 les arguments et les commutateurs de ligne de commande requis. PathName peut également inclure le lecteur et le chemin d'accès au répertoire ou au dossier.
Si vous ne connaissez pas le chemin d'accès au programme, vous pouvez utiliser le GetFiles pour le rechercher. 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

Optionnel. AppWinStyle. Valeur choisie à partir du AppWinStyle spécifiant le style de la fenêtre dans laquelle le programme doit être exécuté. Si Style est omis, Shell utilise AppWinStyle.MinimizedFocus, le programme est activé et la fenêtre est réduite.

Wait
Boolean

Optionnel. Boolean. Valeur indiquant si la fonction Shell doit attendre la fin du programme. Si Wait est omis, Shell utilise False.

Timeout
Int32

Optionnel. Integer. Nombre de millisecondes à attendre avant la fin du programme si Wait a la valeur True. Si Timeout est omis, Shell utilise -1 : il n'y a donc aucun délai et Shell ne retourne aucune valeur jusqu'à la fin du programme. Ainsi, si vous omettez Timeout ou si vous lui affectez -1, il est possible que Shell ne retourne jamais le contrôle à votre programme.

Retours

Entier contenant l’ID du 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 se trouve en dehors de la plage de 0 à 9 compris.

Shell ne peut pas trouver le fichier PathName.

PathName a la valeur Nothing.

Exemples

L’exemple suivant utilise la Shell fonction pour exécuter une application spécifiée par l’utilisateur. AppWinStyle.NormalFocus La spécification comme deuxième argument ouvre l’application dans la 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 si le programme nommé dans est toujours en PathName cours d’exécution lors Shell des retours. 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 sur False, Shell retourne l’ID de processus du programme. L’ID de processus est un numéro 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 à l’aide System.Windows.Formsde . 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 exécuter cmd.exe en tant qu’alternative.

En attente d’achèvement

Par défaut, la Shell fonction exécute le programme de manière asynchrone. Cela signifie qu’un programme démarré avec la Shell fonction peut ne pas se terminer avant l’exécution des instructions qui suivent l’exécution de la Shell fonction. Si vous souhaitez attendre que le programme se termine 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 de fichier

Vous devez toujours placer l’ensemble de la spécification du chemin d’accès et du fichier entre guillemets, comme le montre 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 le chemin d’accès n’était pas placé entre guillemets, Windows recherche un fichier appelé Program.exe dans le répertoire C :\, plutôt que display.exe dans le répertoire C :\Program Files.

Important

Si vous ne placez pas entre guillemets le chemin d’accès et la spécification du fichier, 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 comprend 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é, 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