Interaction.Shell(String, AppWinStyle, Boolean, Int32) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 Wait
True
.
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.