Cette documentation est archivée et n’est pas conservée.

Interaction.Shell, méthode

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.

Espace de noms : Microsoft.VisualBasic
Assembly : Microsoft.VisualBasic (dans microsoft.visualbasic.dll)

public static int Shell (
	string PathName,
	[OptionalAttribute] AppWinStyle Style,
	[OptionalAttribute] bool Wait,
	[OptionalAttribute] int Timeout
)
public static int Shell (
	String PathName, 
	/** @attribute OptionalAttribute() */ AppWinStyle Style, 
	/** @attribute OptionalAttribute() */ boolean Wait, 
	/** @attribute OptionalAttribute() */ int Timeout
)
public static function Shell (
	PathName : String, 
	Style : AppWinStyle, 
	Wait : boolean, 
	Timeout : int
) : int

Paramètres

PathName

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 la méthode My.Computer.FileSystem.GetFiles pour le rechercher. Par exemple, vous pouvez appeler My.Computer.FileSystem.GetFiles("C:\", True, "testFile.txt") qui retourne le chemin d'accès complet de chaque fichier nommé testFile.txt sur le lecteur C:\.

Style

Facultatif. AppWinStyle. Valeur choisie à partir de l'énumération AppWinStyle et spécifiant le style de la fenêtre dans laquelle le programme s'exécute. Si Style est omis, Shell utilise AppWinStyle.MinimizedFocus, le programme est activé et la fenêtre est réduite.

Wait

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

Timeout

Facultatif. Integer. Le nombre de millisecondes à attendre pour la fin du programme si Wait est 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.

Valeur de retour

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.

Pour plus d'informations, consultez la rubrique Visual Basic Shell, fonction.

La valeur de retour de la fonction Shell varie selon que le programme nommé dans PathName est en cours d'exécution lorsque Shell retourne une valeur. Si vous définissez Wait à True et que le programme avant l'expiration du délai, Shell retourne zéro. Si le délai expire, si vous omettez Wait ou si vous lui affectez la valeur False, Shell retourne l'ID du processus du programme. L'ID du processus est un nombre unique qui identifie le programme en cours d'exécution.

Échec de démarrage

Si la fonction Shell ne peut pas démarrer le programme nommé, une erreur FileNotFoundException se produit. C'est le cas, par exemple, si vous tentez d'exécuter un programme 16 bits tel que command.com depuis une application utilisant System.Windows.Forms. Pour un calcul, 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 comme solution de remplacement.

En attente de la conclusion

Par défaut, la fonction Shell exécute le programme de façon asynchrone. Cela signifie qu'un programme lancé par la fonction Shell peut ne pas s'exécuter complètement avant que les instructions suivant la fonction Shell ne soient exécutées. Si vous souhaitez attendre la fin du programme avant de continuer, vous devez définir 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, parce que Shell retourne zéro s'il attend la conclusion et 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 code utilisateur pour initialiser le processus et attendre la conclusion. L'exemple suivant montre comment initialiser un processus, attendre sa conclusion 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 mettre l'intégralité du chemin d'accès et la spécification de fichiers 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 caractère de guillemet double dans la chaîne. Ainsi, l'exemple précédent présente la chaîne suivante à la fonction Shell :

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

Si le chemin d'accès n'est pas placé entre guillemets, Windows recherche un fichier appelé Program.exe dans le répertoire C:\, au lieu du fichier display.exe dans le répertoire C:\Program Files.

Remarque de sécuritéRemarque de sécurité

Si vous ne placez pas le chemin d'accès et la spécification de fichier entre guillemets, un problème de sécurité risque de se poser si le nom du fichier ou le nœud du chemin contient des espaces. Dans l'exemple précédent, le nœud du chemin \Program Files inclut un espace. Si la spécification n'avait pas été entre guillemets et qu'un programme appelé Program.exe avait été installé dans C:\ (par intrusion illicite par exemple), Windows l'aurait exécuté au lieu de display.exe.

Remarque de sécuritéRemarque de sécurité

La fonction Shell nécessite une permission de code non managée, qui peut affecter son exécution dans les situations de confiance partielle. Pour plus d'informations, consultez SecurityPermission et Autorisations d'accès du code.

L'exemple suivant utilise la fonction Shell pour exécuter une application spécifiée par l'utilisateur. Si AppWinStyle.NormalFocus est spécifié en tant que deuxième argument, l'application est activée et affichée sous sa taille normale.

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.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

.NET Compact Framework

Prise en charge dans : 2.0
Afficher: