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