Comment Ca Marche - Communauté informatique  
   
Accueil - Encyclopédie informatiqueTélécharger l'encyclopédieContribuer à cet article

VBScript - Objet WshShell

Objet WshShell Encyclopédie


WshShell

L'objet WshShell contient des informations sur l'environnement d'exécution, ainsi que des méthodes permettant de gérer l'exécution locale d'applications, de manipuler la base de registre, d'accéder aux ressources systèmes (base de registre, variables d'environnement, répertoires du système).

L'objet WshShell est obtenu en créant une instance de l'objet COM identifié par le progID «WScript.WshShell« :

Set WshShell = CreateObject("WScript.WshShell")

Voici un récapitulatif des propriétés et méthodes de l'objet WshShell :

Objet WshShell
Collections Propriétés Méthodes
  Environment
SpecialFolders
CreateShortCut
ExpandEnvironmentScrings
LogEvent
Popup
RegDelete
RegRead
RegWrite
Run

Méthodes de l'objet WshShell

Les méthodes de l'objet WshShell sont les suivantes :

Méthode Description
AppActivate([title]) Rend la fenêtre d'application active. Le paramètre title optionnel permet de préciser le titre de la fenêtre à activer, ou bien son ID.
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run("calc.exe")
WScript.Sleep 200
WshShell.AppActivate "Calculatrice"
CreateShortCut(strPathName) Crée un et retourne un objet WshShortCut définissant un raccourci à l'emplacement défini en paramètre (strPathName).
strDesktop = WshShell.SpecialFolders("Desktop")
set oLink = WshShell.CreateShortcut(strDesktop & "\raccourci.lnk")
ExpandEnvironmentStrings(strString) Renvoie une chaîne correspondant à une variable d'environnement à développer, dont le nom de variable, entouré par le caractère % est précisé en argument.
WScript.Echo "WinDir :" & WshShell.ExpandEnvironmentStrings("%WinDir%")
Logevent(intType, strMessage [, strTarget]) Permet de consigner un événements dans le journal d'événements du système. Le premier argument est un entier représentant le type de l'événement, le second est une chaîne indiquant le texte à consigner. Les types d'événements sont les suivants :
  • 0 SUCCESS (réussite)
  • 1 ERROR (erreur)
  • 2 WARNING (attention)
  • 4 INFORMATION (information)
  • 8 AUDIT_SUCCESS (audit réussi)
  • 16 AUDIT_FAILURE (audit échoué)
Enfin, le dernier argument, facultatif, permet, sous les systèmes NT/2000/XP, de définir le système dans lequel l'événement doit être consigné.
WScript.Echo "WinDir :" & WshShell.ExpandEnvironmentStrings("%WinDir%")
PopUp(strText,[natSecondsToWait,[,strTitle,[natType]]] ) Affiche une fenêtre contextuelle contenant le texte à affiché, défini en argument (strText). L'argument optionnel natSecondsToWait, lorsqu'il est strictement positif, défini le nombre de secondes au-delà desquelles la fenêtre est automatiquement fermée. L'argument facultatif strTitle permet de définir le titre à afficher dans la barre de titre. Enfin, le dernier argument optionnel défini les boutons à afficher dans la boîte de dialogue, définis par les constantes de boîtes de dialogue.
RegDelete(strName) Supprime de la base de registre la clé ou la valeur passée en argument (strName). Si strName se termine par une barre oblique inverse, la clé sera supprimée, sinon seule la valeur sera supprimée. L'argument strName doit nécessairement commencer par une des chaînes suivante ou sa forme abrégée (entre parenthèses) :
  • HKEY_CLASSES_ROOT (HKCR)
  • HKEY_CURRENT_USER (HKCU)
  • HKEY_LOCAL_MACHINE (HKLM)
  • HKEY_USERS (HKU)
  • HKEY_CURRENT_CONFIG (HKCC)
RegRead(strName) Renvoie la valeur ou la clé du registre dont le nom est passé en argument. Si strName se termine par une barre oblique inverse, la clé sera renvoyée, sinon la valeur sera renvoyée. Comme pour RegDelete, la chaîne strName doit commencer par une des chaînes ci-dessus.
WScript.Echo WshShell.RegRead("HKCU\MyKey\")'Renvoie la clef
WScript.Echo WshShell.RegRead("HKCU\MyKey")	'Renvoi la valeur
RegRead(strName) Renvoie la valeur ou la clé du registre dont le nom est passé en argument. Si strName se termine par une barre oblique inverse, la clé sera renvoyée, sinon la valeur sera renvoyée. Comme pour RegDelete, la chaîne strName doit commencer par une des chaînes ci-dessus.
WScript.Echo WshShell.RegRead("HKCU\MyKey\")'Renvoie la clef
WScript.Echo WshShell.RegRead("HKCU\MyKey")	'Renvoi la valeur
RegWrite(strName,strValue[,strType]) Définit la clé du registre dont le nom est spécifié en argument (strName) et lui affecte la valeur passée en argument (strValue). Si strName se termine par une barre oblique inverse, RegWrite enregistrera strValue en tant que clé, sinon elle sera enregistrée en tant que valeur. Comme pour RegDelete, la chaîne strName doit commencer par une des chaînes ci-dessus. Les valeurs pour l'argument facultatif strType sont les suivantes :
  • REG_SZ, pour une chaîne de caractères
  • REG_EXPAND_SZ, pour une chaîne de caractères
  • REG_DWORD, pour un entier
  • REG_BINARY, pour un booléen
,Si un autre type de données est transmis, RegWrite renvoie E_INVALIDARG.
WScript.Echo WshShell.Write("HKCU\MyKey\","My Value")'
WScript.Echo WshShell.RegRead("HKCU\MyKey")	'Renvoi la valeur
Run([intWindowStyle], [bWaitOnReturn]) La commande Run exécute la commande passée en argument (strCommand). L'argument facultatif intWindowStyle permet de définir la manière dont la fenêtre est ouverte et peut prendre une des valeurs suivantes :
  • 0: Masque la fenêtre en cours et active une nouvelle fenêtre.
  • 1: La fenêtre est activée et affichée. Si cette dernière est réduite ou agrandie, le système restaure sa taille et sa position d'origine. Il s'agit du drapeau à utiliser lors du premier appel d'une application.
  • 2: La fenêtre est activée et affichée sous forme réduite.
  • 3: La fenêtre est activée et affichée sous sa forme agrandie.
  • 4: La fenêtre est affichée à sa taille et à son emplacement précédents.
  • 5: La fenêtre est activée et affichée à sa taille et son emplacement actuels.
  • 6: La fenêtre est réduite et la fenêtre de niveau supérieur suivant (ordre Z) est affichée.
  • 7: La fenêtre est affichée sous sa forme réduite. La fenêtre active reste active.
  • 8: La fenêtre est affichée sous son état actuel. La fenêtre active reste active.
  • 9 La fenêtre est activée et affichée. Si cette dernière est réduite ou agrandie, le système restaure sa taille et son emplacement d'origine.
  • 10: La fenêtre est affichée selon l'état du programme qui a lancé l'application.
Si l'argument facultatif bWaitOnReturn est défini sur False, la méthode Run renvoie le code 0 et n'attend pas la fin du traitement, sinon, la méthode Run attend la fin du traitement et renvoie tout code d'erreur renvoyé par l'application. L'exemple suivant ouvre le script en cours dans une instance du bloc-note :
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("%windir%\notepad" & WScript.ScriptFullName, 1, TRUE)
SendKeys(strKey) Simule l'appui sur des touches du clavier et envoie ces entrées à l'application concernée.
WshShell.SetDefaultPrinter("\\Serveur\Imprimante")

Propriétés de l'objet WScript

Les propriétés de l'objet WshShell sont les suivantes :

Propriété Description
Environment Renvoie une collection d'objets WshEnvironment représentant les variables d'environnement du système.
SpecialFolders Renvoie une collection d'objets WshEnvironment représentant les variables d'environnement du système.

Quelques exemples d'utilisation

Propriétés système

Pour ouvrir la boîte de dialogue du panneau de configuration, il suffit d'utiliser la méthode Run de l'objet WshShell comme suit :

WshShell = CreateObject('WScript.Shell')
WshShell.Run('Control.exe Sysdm.cpl,,0')
Le dernier paramètre (0 dans l'exemple) permet de préciser l'index de l'onglet ayant le focus à l'ouverture.

Ajout/Suppression de programmes

Pour ouvrir la boîte de dialogue d'ajout/suppression de programmes, il suffit d'utiliser la méthode Run de l'objet WshShell comme suit :

WshShell = CreateObject('WScript.Shell')
WshShell.Run('Control.exe AppWiz.cpl,,1')

Assistant d'ajout d'imprimante

Pour ouvrir la boîte de dialogue de l'assistant d'ajout d'imprimante, il suffit d'utiliser la méthode Run de l'objet WshShell comme suit :

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run("rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter")

Ce document intitulé « VBScript - Objet WshShell » issu de l'encyclopédie informatique Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.