FAQ VBScript
Transcription
FAQ VBScript
Date de publication : 13/01/2007 Dernière mise à jour : 28/02/2007 Cette FAQ VB Script est le fruit de la collaboration de l'équipe de rédaction et des membres du forum VB. Aidez-nous à faire vivre cette FAQ en participant au forum Vos contributions VBScript. Pour toutes questions ou tous problèmes concernant cette FAQ, vous pouvez contacter par MP ThierryAIM ou bbil. L'équipe de rédaction de Developpez.com vous remercie pour votre participation passée et à venir. Ont contribué à cette FAQ : Forum - Jean-Marc Rabilloud - Romain Puyfoulhoux Baptiste Wicht - Khorne - shwin - Sadneth - ThierryAIM bbil - SilkyRoad - Catbull - Tofalu - argyronet - omen999 - cedric600 - ckeromen - l_autodidacte - ProgElecT - 1. Généralités (2) ........................................................................................................................................................................... 4 2. VB Script (71) ........................................................................................................................................................................... 5 2.1. Généralités (10) .................................................................................................................................................................6 2.2. Fichiers : le FileSystemObject (27) ................................................................................................................................11 2.2.1. Généralités (2) ........................................................................................................................................................12 2.2.2. Accès aux Disques (4) ...........................................................................................................................................13 2.2.3. Accès aux Dossiers/Répertoires (9) .......................................................................................................................15 2.2.4. Accès aux Fichiers (12) .........................................................................................................................................20 2.3. Applications Externes (5) ............................................................................................................................................... 27 2.4. Les Fichiers de Script Windows (4) .............................................................................................................................. 29 2.5. XML (6) ..........................................................................................................................................................................31 2.6. Base de donnée (1) ......................................................................................................................................................... 35 2.7. Manipulation des chaînes de caractères (9) ................................................................................................................... 36 2.8. Manipulation des dates (3) ............................................................................................................................................. 41 2.9. Manipuler la base de registre (6) ................................................................................................................................... 42 3. WMI : Windows Management Instrumentation (9) ................................................................................................................ 45 3.1. Processus : classe Win32_Process (2) ............................................................................................................................46 3.2. Services : classe Win32_Service (1) .............................................................................................................................. 47 3.3. Imprimantes : classe Win32_Printer (3) .........................................................................................................................48 3.4. Réseaux (2) ..................................................................................................................................................................... 50 4. WSH : Windows Scripting Host (15) ..................................................................................................................................... 52 4.1. Shell (wshShell) (5) ........................................................................................................................................................53 4.2. Réseau (wshNetwork) (5) ...............................................................................................................................................57 4.3. Autres (4) ........................................................................................................................................................................ 58 -3Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > Généralités Où trouver l'aide en ligne pour VBScript ? Auteurs : omen999 , bbil , Télécharger le fichier scd56fr.exe sur le site de Microsoft. Comment écrire un script VBS ? Auteurs : ThierryAIM , Un script VBS peut être écrit avec n'importe quel éditeur de texte ASCII. Vous pouvez utiliser le bloc-notes ou Wordpad de Windows, ou mieux, un éditeur à coloration syntaxique comme notepad++ (gratuit et "open source") -4Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script -5Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Généralités Définition Auteurs : ThierryAIM , VBScript (Microsoft Visual Basic Scripting Edition) est un langage de script d'usage général, dérivé de Microsoft Visual Basic. Apparu avec Internet Explorer 3, il est utilisable soit en ligne de commande, soit directement dans l'environnement Windows ou dans la plupart des navigateurs web. VBScript est un langage interprété, ne nécessitant pas de compilateur spécifique, contrairement aux langages compilés, mais il a besoin d'un interpréteur, capable de comprendre et d'exécuter les instructions contenues dans le script. Installé de base depuis Windows 98, l'interpréteur le plus couramment utilisé dans l'environnement Windows est wscript.exe L'équivalent de wscript.exe pour une exécution en ligne de commande est cscript.exe Les fichiers de type VBScript ont généralement l'extension .vbs Comment changer l'interpréteur de script par défaut ? Auteurs : bbil , Deux interpréteurs de script sont disponible sous Windows : • • Wscript : pour le mode graphique Cscript : pour le mode texte pour changer l'interpréteur par défaut, on utilise la commande : Pour choisir Wscript : wscript //H:WScript Pour choisir Cscript : wscript //H:CScript Nota : On préférera utiliser CScript, qui présente l'avantage d'avoir une commande d'affichage "Wscript.Echo" non bloquante là où WScript utilise une boîte de message (message box) réclamant une action de l'opérateur Le typage des variables Auteurs : ThierryAIM , Comme dans tous les langages, même si VBScript est très permissif à ce niveau, il est recommandé de déclarer toutes les variables utilisées dans le code. Mais, contrairement aux langages Visual Basic 6 (VB6) ou Visual Basic for Application (VBA), en VBScript, le typage des variables se fait au moment de l'assignation, et non pas lors de la déclaration. Autrement dit, vous ne devez pas utiliser de déclaration Dim ... As ... , mais simplement Dim ... -6Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Déclarations correctes : VBS Dim Dim Dim Dim i MonText toto, titi arg1, arg2, arg3 Déclarations incorrectes : Dim i As Integer Dim MonText As String Comment programmer une pause dans le code ? Auteurs : bbil , VBS MsgBox "Appuyer sur OK pour lancer la pause" Wscript.Sleep 2000 ' durée en ms .. 2000 => 2 s MsgBox "2 secondes Plus tard" Comment interrompre un script ? Auteurs : Forum , La méthode Quit permet de mettre fin à un script immédiatement : VBS If MyVar = 0 Then WScript.Quit Comment obtenir le nom et chemin complet d'un script en cours d'exécution ? Auteurs : ThierryAIM , Affiche le nom et chemin complet du script en cours d'exécution : VBS MsgBox WScript.ScriptFullName Affiche le nom du script en cours d'exécution : VBS -7Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ VBS MsgBox WScript.ScriptName Comment utiliser les arguments en ligne de commande ? Auteurs : bbil , Grâce à l'objet WshArguments .. créer un fichier msgbox.vbs code : msgbox.VBS If wscript.Arguments.length = 2 Then MsgBox wscript.arguments(0),wscript.arguments(1), "FaqVbs" Else wscript.Echo "Nombre d'arguments incorrect" Wscript.Echo "MsgBox Message iType" End if puis pour l'appel du code exécuter en ligne de commande : Ligne de commande MsgBox "Bonjour à tous " 48 Comment utiliser la boîte de dialogue de sélection d'un répertoire ? Auteurs : bbil , ThierryAIM , Avec la méthode BrowseForFolder de l'objet Shell.Application : VBS Const RETURNONLYFSDIRS = &H1 Set oShell = CreateObject("Shell.Application") Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS, "c:\") If oFolder is Nothing Then MsgBox "Abandon opérateur",vbCritical Else Set oFolderItem = oFolder.Self MsgBox oFolderItem.path End If Set oFolderItem = Nothing Set oFolder = Nothing Set oShell = Nothing Quelques compléments intéressants à cette fonction : Supprimer le bouton "Créer un nouveau dossier" : VBS Const RETURNONLYFSDIRS = &H1 -8Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ VBS Const NONEWFOLDERBUTTON = &H200 Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS + NONEWFOLDERBUTTON, "c:\") Ajouter un label d'aide en ligne : VBS Const RETURNONLYFSDIRS = &H1 Const NONEWFOLDERBUTTON = &H200 Const UAHINT = &H100 Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS + NONEWFOLDERBUTTON + UAHINT, "c:\") Comment ouvrir la boîte de dialogue de sélection d'un fichier ? Auteurs : Forum , l_autodidacte , En utilisant la classe SAFRCFileDlg.FileOpen découlant de Safrcdlg.dll: vb Set objDialog=CreateObject("SAFRCFileDlg.FileOpen") ObjDialog.OpenFileOpenDlg strFileName=objDialog.FileName Wscript.Echo strFileName Set objDialog=Nothing ou en utilisant la classe UserAccounts.CommonDialog ou encore UserAccounts.CommonDialog.1 découlant toutes les deux de NUSRMGR.CPL: Set oDlg=CreateObject("UserAccounts.CommonDialog.1") oDlg.Filter="Tous les fichiers(*.*)|*.*|Fichier text(*.txt)|*.txt" oDlg.FilterIndex=2 oDlg.InitialDir="C:\" oDlg.ShowOpen Wscript.echo oDlg.filename set oDlg= nothing Il est à noter que ces deux méthodes fonctionnent sous Windows XP mais pas sous Vista ni Windows 7(testé). Faire disparaitre une MsgBox au bout d'un certain temps ? Auteurs : omen999 , bbil , Popup(strText,[nSecondsToWait],[strTitle],[nType]) Les types disponibles sont : -9Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Constante vbOKOnly vbOKCancel 0 1 Valeur vbAbortRetryIgnore 2 vbYesNoCancel 3 vbYesNo 4 vbRetryCancel 5 Description Affiche le bouton OK. Affiche les boutons OK et Annuler. Affiche les boutons Terminer, Réessayer et Ignorer. Affiche les boutons Oui, Non et Annuler. Affiche les boutons Oui et Non. Affiche les boutons Réessayer et Annuler. on peut ajouter au type de bouton le type d'icône souhaité : Valeur 16 32 48 64 Type d'icône Affiche l'icône Stop. Affiche l'icône Point d'interrogation. Affiche l'icône Point d'exclamation. Affiche l'icône Informations. vb Set oShell = WScript.CreateObject("WScript.Shell") iRet = oShell.Popup ("Bonjour le monde ",10,"10s avant clic sur OK",vbOKCancel+16) Wscript.Echo iRet la fonction renvoie : Valeur -1 1 2 3 4 5 6 7 Description Pas de réponse OK Annuler Abandonner Réessayer Ignorer Oui Non - 10 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Fichiers : le FileSystemObject - 11 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Fichiers : le FileSystemObject > Généralités Qu'est ce que le FileSystemObject ? Auteurs : Tofalu , bbil , Microsoft à mis au point un ensemble d'objets regroupés au sein de la librairie Microsoft Scripting Runtime. Cet ensemble de classe hiérarchique possède une unique racine : le FileSystemObject, plus communément connu sous le nom de FSO celui-ci permet d'ajouter, de déplacer, de modifier, de créer ou de supprimer des dossiers (répertoires) , des fichiers.... lien : Tutoriel manipulation des fichiers en VBA Comment utiliser FileSystemObject ? Auteurs : bbil , Toute utilisation de FileSystemObject commence par la création de l'objet "racine" FileSystemObject: Création Objet FSO en VBS Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") Ensuite toute utilisation de FileSystemObject passera par cet objet. - 12 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Fichiers : le FileSystemObject > Accès aux Disques Comment lister l'ensemble des unités de disques d'un PC ? Auteurs : SilkyRoad , bbil , Lister les disques et l'espace disponible : VBS Set FSO = CreateObject("Scripting.FileSystemObject") For Each Drv In FSO.Drives If Drv.IsReady Then MsgBox "le support " & Drv.DriveLetter & " --> " & _ Drv.drivetype & " --> " & Drv.FreeSpace & " octets" End If Next Comment tester l'existence d'un disque ? Auteurs : Tofalu , bbil , La méthode DriveExists exposée par la classe FileSystemObject teste l'existence d'un disque en fonction de son nom. VBS Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") MsgBox oFSO.DriveExists("G") Comment obtenir des informations sur les unités de disques ? Auteurs : Tofalu , bbil , Les propriétés des disques • DriveLetter : Lettre utilisé par le système d'exploitation pour accéder au disque. Il s'agit de la clé de la collection Drives. Exemple : D • DriveType : Type du disque (CDRom,Fixed,RamDisk,Remote,Removable,UnknownType) DriveType • 0 : Inconnu • 1 : Amovible • 2 : Fixe • 3 : Réseau • 4 : CD-ROM • 5 : Disque virtuel • FileSystem : Type du système de fichier du disque. Comme FAT, FAT32, NTFS et autre . • AvailableSpace, FreeSpace : Espace disponible et espace libre en octets • IsReady : Booléen indiquant si l'unité de disque est disponible. Dans le cas d'un lecteur de CD-ROM, elle permettra de savoir si un disque est présent ou pas. • Path : Chemin de l'unité de disque. Exemple : "D :" • RootFolder : Retourne un objet Folder correspondant au dossier racine du disque. C'est cet objet qui donne accès à l'ensemble des autres dossiers présent sur le disque. Le path de ce dossier est alors : Drive.Path + \ , Exemple D:\" • SerialNumber : Numéro de série du disque. Exemple : 1154367849 - 13 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ • • • ShareName : Retourne une chaîne de caractères correspondant au nom de partage du disque. Cette chaîne sera nulle si le disque n'est pas partagé. Exemple : Partage_Donnees VolumeName : Retourne le nom du volume (et non de l'unité) dans une chaîne de caractères. Exemple : Donnees TotalSize : Taille du disque en octets Un exemple d'utilisation : VBS Dim oFSO,oDrv Set oFSO = CreateObject("Scripting.FileSystemObject") If oFSO.DriveExists("C") Then Set oDrv = oFso.GetDrive("C") MsgBox "DriveLetter : " & oDrv.DriveLetter & vbCrlf & _ "DriveType : " & oDrv.DriveType & vbCrlf & _ "FileSystem : " & oDrv.FileSystem & vbCrlf & _ "AvailableSpace : " & oDrv.AvailableSpace & vbCrlf & _ "FreeSpace : " & oDrv.FreeSpace & vbCrlf & _ "IsReady : " & oDrv.IsReady & vbCrlf & _ "Path : " & oDrv.Path & vbCrlf & _ "RootFolder : " & oDrv.RootFolder & vbCrlf & _ "SerialNumber : " & oDrv.SerialNumber & vbCrlf & _ "ShareName : " & oDrv.ShareName & vbCrlf & _ "VolumeName : " & oDrv.VolumeName & vbCrlf & _ "TotalSize : " & oDrv.TotalSize End if Comment retrouver le nom d'un disque à partir d'un chemin ? Auteurs : bbil , la méthode GetDriveName,renvoie une chaîne contenant le nom correspondant au lecteur spécifié dans un chemin d'accès Remarque: la méthode n'effectue aucune vérification (existence...) elle effectue juste une "extraction" de chaîne de caractère. exemple d'utilisation : VBS Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") MsgBox oFSO.GetDriveName(C:\Program Files\Fichiers communs") renvoi C: - 14 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Fichiers : le FileSystemObject > Accès aux Dossiers/Répertoires Comment tester l'existence d'un répertoire ? Auteurs : bbil , Avec la méthode FolderExists Dossier Existe Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") MsgBox "C:\Program Files\Fichiers communs >> " & oFSO.FolderExists("C:\Program Files \Fichiers communs") MsgBox "C:\Program Files\Fichiers communs\RepBidon >> " & oFSO.FolderExists("C:\Program Files \Fichiers communs\RepBidon") Comment lister les sous répertoires d'un dossier ? Auteurs : bbil , Une boucle For Each permet d'énumérer l'ensemble des sous-dossiers : listes des sous-dossiers Dim stRep 'Nom du répertoire à parcourir Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") stRep = "C:\Program Files\Fichiers communs" If oFSO.FolderExists(stRep) Then For each oFld in oFSO.GetFolder(stRep).SubFolders Wscript.Echo oFld.Name Next End If Comment obtenir des informations sur un dossier ? Auteurs : Tofalu , bbil , Les propriétés de l'objet Folder • Attributes : attributs du dossier. Attributs du dossier • 0 : Normal. Aucun attribut n'est défini. • 1 : ReadOnly : Dossier en lecture seule (attribut en lecture/ecriture) • 2 : Hidden : Dossier caché (attribut en lecture/ecriture) • 4 : System : Dossier système (attribut en lecture/ecriture) • 32 : Archive : Dossier archivé (attribut en lecture/ecriture) • 2048 : Compressed : Dossier compress (attribut en lecture seule) • DateCreated : Date de création du dossier • DateLastAccessed : Date du dernier accès au dossier • DateLastModified : Date de dernière modification • Drive : Lettre désignant l'unité de disque d'où est issu le dossier. • Files : Collection regroupant les fichiers du dossier • IsRootFolder : Booléen qui définit si le dossier est le dossier racine de son unité de disque. • Name : Nom du dossier. Exemple : Windows (propriété en lecture/ecriture) - 15 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ • • • • • • • ParentFolder : Objet Folder correspondant au dossier parent. Si le dossier est un dossier RootFolder cette propriété retourne Nothing. Path : Chemin complet d'accès au dossier. Exemple : D:\Windows ShortName : Nom court sur 8 caractères maximum. Exemple ESSAI1~1 ShortPath : Chemin complet d'accès au dossier où chaque composant respecte la norme évoquée pour ShortName. Exemple D:\ABCDEF1~1\ ESSAI1~1 Size : Taille totale du dossier en octets. Il s'agit de la somme de la taille de tous les fichiers présents dans le dossier et ses sous-dossiers. SubFolders : Collection d'objet Folder regroupant les sous-dossiers. Type : Type du dossier. Dans tous les cas testés, il s'agit de FileFolder. Dim stRep 'Nom du répertoire à parcourir Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") stRep = "C:\Program Files\Fichiers communs" If oFSO.FolderExists(stRep) Then Set oFld = oFSO.GetFolder(stRep) MsgBox "Attributes :" & oFld.Attributes & vbCrlf & _ "DateCreated :" & oFld.DateCreated & vbCrlf & _ "DateLastAccessed :" & oFld.DateLastAccessed & vbCrlf & _ "DateLastModified :" & oFld.DateLastModified & vbCrlf & _ "Drive :" & oFld.Drive & vbCrlf & _ "IsRootFolder :" & oFld.IsRootFolder & vbCrlf & _ "Name :" & oFld.Name & vbCrlf & _ "ParentFolder :" & oFld.ParentFolder & vbCrlf & _ "Path :" & oFld.Path & vbCrlf & _ "ShortName :" & oFld.ShortName & vbCrlf & _ "ShortPath :" & oFld.ShortPath & vbCrlf & _ "Size :" & oFld.Size & vbCrlf & _ "SubFolders.Count :" & oFld.SubFolders.count & vbCrlf & _ "Type :" & oFld.Type End If Comment créer un répertoire ? Auteurs : Tofalu , bbil , Il est possible d'utiliser deux techniques différentes pour créer un dossier : Depuis le FSO directement Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") 'Crée le repertoire Set oFld=oFSO.CreateFolder ("D:\Essai") où en rajoutant un élément à la collection SubFolders Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFld=oFSO.GetFolder ("D:\") - 16 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ oFld.subFolders.Add("Essai") Comment créer une arborescence ? Auteurs : Forum , Il est possible d'utiliser une fonction récursive pour créer une arborescence. Option Explicit Dim ofso Set ofso = CreateObject("Scripting.FileSystemObject") CreerRep("c:\data\toto\titi\") Sub CreerRep(Chemin) If Not ofso.FolderExists(chemin) Then CreerRep(ofso.GetParentFolderName(chemin)) ofso.CreateFolder(chemin) End If End Sub Comment copier un répertoire et son contenu ? Auteurs : Tofalu , bbil , Il est possible d'utiliser deux techniques différentes pour copier un dossier : Depuis le FSO directement grâce à la méthode CopyFolder Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.CopyFolder "c:\tmp","c:\tmp2",True ' True : pour copier en "écrasant" destination si existe.. où en utilisant la méthode copy de l'objet Folder Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") set oFld = oFSO.GetFolder("c:\tmp") oFld.Copy "c:\tmp2",True ' True : pour copier en "écrasant" destination si existe.. Comment effacer un répertoire et son contenu ? Auteurs : Tofalu , bbil , Il est possible d'utiliser deux techniques différentes pour effacer un dossier : Depuis le FSO directement grâce à la méthode DeleteFolder Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.DeleteFolder "c:\tmp2",True ' Le paramétre "Force" à true permet d'effacer les fichiers en lectures seules. où en utilisant la méthode delete de l'objet Folder - 17 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") set oFld = oFSO.GetFolder("c:\tmp2") oFld.Delete False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers et répertoires les deux méthodes prennent en dernier paramètre le paramètre "Force" qui à "True" permet d'effacer les fichiers en lecture seule. Comment déplacer un répertoire et son contenu ? Auteurs : Tofalu , bbil , Il est possible d'utiliser deux techniques différentes pour déplacer un dossier : Depuis le FSO directement grâce à la méthode MoveFolder Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.MoveFolder "c:\tmp2","c:\tmp3" où en utilisant la méthode move de l'objet Folder Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") set oFld = oFSO.GetFolder("c:\tmp2") oFld.Move "C:\tmp3" Comment compresser un dossier ? Auteurs : SilkyRoad , VBS Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim Source, Destination, MyHex, MyBinary, i Dim oShell, oApp, oFolder, oCTF, oFile Dim oFileSys Source = "C:\Temp" Destination = "C:\maSauvegarde.zip" MyHex = _ Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) For i = 0 To UBound(MyHex) MyBinary = MyBinary & Chr(MyHex(i)) Next Set oShell = CreateObject("WScript.Shell") Set oFileSys = CreateObject("Scripting.FileSystemObject") 'Creation du zip Set oCTF = oFileSys.CreateTextFile(Destination, True) oCTF.Write MyBinary oCTF.Close Set oCTF = Nothing - 18 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ en lectur VBS Set oApp = CreateObject("Shell.Application") Set oFolder = oApp.NameSpace(Source) If Not oFolder Is Nothing Then _ oApp.NameSpace(Destination).CopyHere oFolder.Items wScript.Sleep 5000 Set oFile = Nothing On Error Resume Next - 19 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Fichiers : le FileSystemObject > Accès aux Fichiers Comment tester l'existence d'un fichier ? Auteurs : bbil , La méthode FileExists exposée par la classe FileSystemObject teste l'existence d'un fichier en fonction de son nom. VBS Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") MsgBox oFSO.FileExists("c:\tmp\Fichier1.txt") Comment lister les fichiers d'un dossier ? Auteurs : bbil , Une boucle For Each permet d'énumérer l'ensemble des fichiers : VBS Dim stRep 'Nom du répertoire à parcourir Dim oFSO,oFl Set oFSO = CreateObject("Scripting.FileSystemObject") stRep = "C:\Tmp" If oFSO.FolderExists(stRep) Then For each oFl in oFSO.GetFolder(stRep).Files Wscript.Echo oFl.Name Next End If Comment obtenir des informations sur fichier ? Auteurs : Tofalu , bbil , Les propriétés de l'objet File • Attributes : attributs du dossier. Attributs du fichier • 0 : Normal. Aucun attribut n'est défini. • 1 : ReadOnly : fichier en lecture seule (attribut en lecture/ecriture) • 2 : Hidden : fichier caché (attribut en lecture/ecriture) • 4 : System : fichier système (attribut en lecture/ecriture) • 32 : Archive : fichier archivé (attribut en lecture/ecriture) • 1024 : Lien ou raccourci. L'attribut est lecture seule. (attribut en lecture seule) • 2048 : Compressed : fichier compressé (attribut en lecture seule) • DateCreated : Date de création du fichier • DateLastAccessed : Date du dernier accès au fichier • DateLastModified : Date de dernière modification • Drive : Lettre désignant l'unité de disque d'où est issu le dossier. • Name : Nom du fichier. Exemple : Fichier1.txt (propriété en lecture/ecriture) • ParentFolder : Objet Folder correspondant au dossier parent. Si le dossier est un dossier RootFolder cette propriété retourne Nothing. • Path : Chemin complet d'accès au fichier. Exemple : c:\tmp\fichier1.txt • ShortName : Nom court sur 8 caractères maximum. Exemple : MONFIC~1.TXT - 20 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ • • • ShortPath : Chemin complet d'accès au fichier où chaque composant respecte la norme évoquée pour ShortName. Exemple D:\ABCDEF1~1\MONFIC~1.TXT Size : Taille du fichier en octets. Type : Type du fichier. Exemple : Document Texte. C'est ce type qui est affiché dans l'explorateur Windows. VBS Dim stFichier 'Nom du Fichier a tester Dim oFSO,oFl Set oFSO = CreateObject("Scripting.FileSystemObject") stFichier = "c:\tmp\Nouveau Document texte.txt" If oFSO.FileExists(stFichier) Then Set oFl = oFSO.GetFile(stFichier) MsgBox "Attributes :" & oFl.Attributes & vbCrlf & _ "DateCreated :" & oFl.DateCreated & vbCrlf & _ "DateLastAccessed :" & oFl.DateLastAccessed & vbCrlf & _ "DateLastModified :" & oFl.DateLastModified & vbCrlf & _ "Drive :" & oFl.Drive & vbCrlf & _ "Name :" & oFl.Name & vbCrlf & _ "ParentFolder :" & oFl.ParentFolder & vbCrlf & _ "Path :" & oFl.Path & vbCrlf & _ "ShortName :" & oFl.ShortName & vbCrlf & _ "ShortPath :" & oFl.ShortPath & vbCrlf & _ "Size :" & oFl.Size & vbCrlf & _ "Type :" & oFl.Type End If Comment obtenir les informations étendues d'un fichier ? Auteurs : Forum , la bibliothèque "Microsoft Shell Controls and Automation" permet, grâce à la fonction GetDetailsOf , d'accéder aux propriétés étendues : stRep="d:\MesPhotos" stFichier ="photo.jpg" Set oShell = CreateObject("Shell.Application") Set oFolder = oShell.Namespace(stRep) Set oFichier = oFolder.Items.Item(stFichier) 'Affiche les propriétés étendues du fichier For i = 0 to 34 Wscript.Echo "[" & i & "] " & oFolder.GetDetailsOf(oFolder.Items, i oFolder.GetDetailsOf(oFichier, i) Next ) & " : " & le résultat : D:\>PropEtendues.vbs Microsoft (R) Windows Script Host Version 5.7 Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés. [0] Nom : photo.jpg [1] Taille : 900 Ko [2] Type : Image JPEG [3] Date de modification : 07/09/2009 18:26 [4] Date de création : 31/10/2010 14:01 [5] Date d'accès : 01/11/2010 13:32 [6] Attributs : A [7] État : Connecté [8] Propriétaire : DELLGX280\philippe - 21 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ [9] Auteur : [10] Titre : [11] Objet : [12] Catégorie : [13] Pages : 1 [14] Commentaires : [15] Copyright : [16] Artiste : [17] Titre de l'album : [18] Année : [19] Numéro de piste : [20] Genre : [21] Durée : [22] Débit : [23] Protégée : [24] Modèle d'appareil photo : 5800 Xpres [25] Date du cliché : 07/09/2009 19:26 [26] Dimensions : 2048 x 1536 [27] : 2048 pixels [28] : 1536 pixels [29] Nom de l'épisode : [30] Description du programme : [31] : [32] Taille de l'échantillon audio : [33] Taux d'échantillonnage audio : [34] Chaînes : Le nombre de propriétés est variable suivant l'OS. Ainsi si XP affiche 35 propriétés, on peut en trouver jusqu'à 266 sous Vista et 284 sous Windows 7. lien : Informations "Avancée" d'un fichier Comment copier un fichier ? Auteurs : Tofalu , bbil , Il est possible d'utiliser deux techniques différentes pour copier un fichier : Depuis le FSO directement grâce à la méthode CopyFile VBS Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.CopyFile "c:\tmp\Fichier1.txt","c:\tmp \Fichier2.txt",True ' True : pour copier en "écrasant" destination si existe.. où en utilisant la méthode copy de l'objet file Dim oFS,oFl Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt") - 22 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ oFl.Copy "c:\tmp \fichier3.txt",False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers en lectures seules. Comment effacer un fichier ? Auteurs : Tofalu , bbil , Il est possible d'utiliser deux techniques différentes pour effacer un fichier : Depuis le FSO directement grâce à la méthode DeleteFile VBS Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.DeleteFile "c:\tmp\fichier1.txt",True ' Le paramétre "Force" à true permet d'effacer les fichiers en lectures seules. où en utilisant la méthode delete de l'objet File Dim oFS,oFl Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt") oFl.Delete False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers et répertoires en lecture les deux méthodes prennent en dernier paramètre le paramètre "Force" qui à "True" permet d'effacer les fichiers en lecture seule. Comment déplacer,renommer un fichier ? Auteurs : Tofalu , bbil , Il est possible d'utiliser deux techniques différentes pour déplacer un fichier : Depuis le FSO directement grâce à la méthode MoveFile Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.MoveFile "c:\tmp\Fichier1.txt","c:\tmp\fichier2.txt" où en utilisant la méthode move de l'objet file VBS Dim oFS,oFl Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt") - 23 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ VBS oFl.Move "D:\tmp \fichier2.txt" ' Déplacement vers autre unité de disque tout en renommant le fichier... Comment lire le contenu d'un fichier texte ? Auteurs : bbil , Lecture ligne à ligne d'un fichier texte : VBS Const ForReading = 1, ForWriting = 2 Dim oFso, f Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading) while Not f.AtEndOfStream wscript.echo f.ReadLine Wend f.Close Lecture de la totalité d'un fichier texte : VBS Const ForReading = 1, ForWriting = 2 Dim oFso, f Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading) Wscript.echo f.ReadAll f.Close Comment ouvrir un fichier texte en Unicode ? Auteurs : bbil , en utilisant le 4° paramétre d'openTextFile OpenTextFile(filename[, iomode[, create[, format]]]) avec format : TristateFalse (0) Ouvre le fichier en ASCII. TristateTrue (-1) Ouvre le fichier en Unicode. TristateUseDefault (-2) Ouvre le fichier en utilisant le paramètre système par défaut. vb Const TristateTrue = -1 - 24 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ vb set f = fso.opentextfile("c:\MonFichier.txt", 1, true,TristateTrue) Comment écrire dans un fichier texte ? Auteurs : bbil , VBS Const ForWriting = 2 Dim fso, f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("c:\temp\ecr.txt", ForWriting,true) f.write("Salut") Comment obtenir le nombre de lignes d'un fichier texte ? Auteurs : ThierryAIM , A l'ai de la propriété Line de l'objet fichier : VBS Const ForReading = 1, ForWriting = 2 Dim oFso, f Dim ts, nl Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\test1.txt", ForReading) ts = f.ReadAll '-- Lit la totalité du fichier Wscript.echo f.Line '-- Récupère le nombre de lignes Comment agir sur tous les fichiers d'un répertoire ? Auteurs : bbil , Grâce à une fonction récursive. Utilisez le principe présenté dans le script suivant en modifiant la procédure ListeFichier. vb Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") stRep = "d:\users" LectRep stRep ' ' Fonction récursive de parcours de répertoire ' Sub LectRep (stR ) For each oFld in oFSO.GetFolder(stR).SubFolders Wscript.Echo "--------------- " & oFld.PAth & "-----------------" ListeFichier (oFld.PATH) LectRep oFld.PATH Next end sub ' ' Listing des fichiers du répertoire - 25 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ vb ' Sub ListeFichier (stR) For each oFl in oFSO.GetFolder(stR).Files Wscript.Echo oFl.Name Next End sub - 26 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Applications Externes Comment piloter Excel pour créer un classeur.xls ? Auteurs : bbil , Il faut utiliser un objet Excel.Application VBS Dim xlapp, classeur, feuille Set xlapp = CreateObject("Excel.Application") xlapp.Visible = True Set classeur = xlapp.Workbooks.add Set feuille = xlapp.ActiveSheet feuille.Range("A1") = "Rajout du texte en cellule A1" Classeur.Saveas "c:\tmp\MonClasseur" classeur.Close True 'quitte en sauvant xlApp.quit Set classeur = Nothing Set xlapp = Nothing Comment piloter Internet Explorer pour envoyer des informations à un site internet ? Auteurs : bbil , Avec l'objet InternetExplorer.Application Exemple pour la connexion au forum développez.com VBS Dim IE Set IE = Wscript.CreateObject("InternetExplorer.Application") IE.Visible = 1 IE.navigate "http://www.developpez.net/forums/login.php" Do While (IE.Busy) WScript.Sleep 10 Loop Set Helem = IE.document.getElementById("vb_login_username") Helem.Value = "NomUtilisateur" Set Helem = IE.document.getElementById("vb_login_password") Helem.Value = "MotDePasse" Set Helem = IE.document.Forms(0) Helem.Submit Comment verrouiller la session Windows courante ? Auteurs : bbil , Pour retourner à l'écran d'accueil de Windows XP (où Vista) de la même façon que lors de l'action simultanée sur les touches Windows et L, on peut faire un appel à la fonction LockWorkStation de User32.dll grâce à "l'utilitaire" rundll32.exe, ce qui donne: VBS Set WshShell = WScript.CreateObject("WScript.Shell") - 27 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ VBS WshShell.Run "rundll32.exe user32.dll,LockWorkStation" Comment lister les actions possibles sur un fichier ? Auteurs : l_autodidacte , En utilisant la propriété Name de la classe FolderItemVerbs découlant de Shell.Application ' Il est utile de connaître ces actions si on veut manipuler un fichier par exemple : "Ouvrir" (Open par défaut),"Copier, coller, Imprimer, supprimer ... et ce en utilisant la méthode InvokVerb ou InvokVerbEx vb Set oShell = CreateObject("Shell.Application") Set oFolder = oShell.NameSpace("c:\tmp") Set oFolderItem = oFolder.ParseName("microsoft.jpg") For Each oVerb In oFolderItem.Verbs If oVerb<>"" Then WScript.Echo oVerb Next lien : http://vb.developpez.com/faqvbs/?page=II.3#ImprimePdf Comment imprimer tous les fichiers .pdf d'un dossier ? Auteurs : l_autodidacte , En utilisant un appel à Shell.Application : vb Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.Namespace("c:\temp\") Set colItems = objFolder.Items For Each objItem in colItems If Ucase(Right(ObjItem.Name,4))=".PDF" then objItem.InvokeVerbEx("Print") End If Next 'Référence à Shell32.dll Bien entendu cela impose la présence d'une application (Acrobat Reader...) gérant les .pdf. - 28 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Les Fichiers de Script Windows Les fichiers Windows Script File (.wsf) Auteurs : bbil , ThierryAIM , Les fichiers de script Windows (Windows Script File), utilisant l'extension réservée .wsf, sont des fichiers textes au format XML, permettant une grande souplesse dans la gestion des scripts VBS. Outre qu'ils permettent l'utilisation de plusieurs langages de script dans un même projet, voyons comment les utiliser en VBScript. Exemple 1 : Séparer un module de fonctions réutilisables, d'un projet : Créer un module .vbs, contenant les fonctions génériques : VBS ' Fichier MesFct.vbs ' function Fct1( st ) Fct1 = st & 1 End function Function Fct2 (st) Fct2 = st & 2 End function Puis un fichier MyScript.wsf ... utilisant ces fonctions : VBS <job id="Main"> <script language="VBScript" src="MesFct.VBS"/> <script language="VBScript"> MsgBox "Appel fonction 1 : " & Fct1 ("A") Msgbox "Appel fonction 2 : " & fCt2 ("B") </script> </job lien : La balise "job" La balise "script" Auteurs : ThierryAIM , Balise réservée du XML pour fichier .wsf, elle permet d'identifier le langage de script utilisé : WSF <script language="VBScript"> WScript.Echo "Il s'agit de VBScript" - 29 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ WSF </script> La balise "job" Auteurs : ThierryAIM , Balise réservée du langage XML des fichiers .wsf, elle permet d'identifier une tache (job) dans un fichier .wsf : WSF <job id="MaTacheVBS"> <script language="VBScript"> WScript.Echo "Il s'agit de VBScript" </script> </job> La balise "package" Auteurs : ThierryAIM , Balise réservée du XML pour fichier .wsf, elle permet d'identifier un groupe de tâche (job) dans un script multi-tâches : Cette balise est facultative lorsque le script ne comporte qu'une seule tâche WSF <package> <job id="MaTache_1_VBS"> <script language="VBScript"> WScript.Echo "VBScript: job 1" </script> </job> <job id="MaTache_2_VBS"> <script language="VBScript"> WScript.Echo "VBScript: job 2" </script> </job> </package> NOTA : La tâche 1 est exécutée par défaut. Pour exécuter la tâche 2 en ligne de commande : cscript myScript.wsf //job:MaTache_2_VBS Pour exécuter les 2 tâches en ligne de commande : cscript myScript.wsf //job:MaTache_1_VBS //job:MaTache_2_VBS - 30 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > XML Comment créer un nouveau document XML ? Auteurs : ThierryAIM , bbil , Le code ci-dessous utilise la classe Microsoft.XMLDOM, permettant d'accéder aux documents de type XML : VBS '-- Créer un document XML Set xmlDoc = CreateObject("Microsoft.XMLDOM") ' Créer et ajouter la racine dans le document ' ATTENTION : il ne peut y avoir qu'un seul noeud racine dans un doc XML Set oRacine = xmlDoc.createElement("Racine") ' Ajouter la racine dans le document xmlDoc.appendChild oRacine ' Ajouter un élément Set oElement = xmlDoc.selectSingleNode("Racine") Set oElement = xmlDoc.createElement("element") xmlDoc.documentElement.appendChild oElement ' positionnement sur la racine ' création d'un fils membre ' crée le fils de la racine ' Ajouter des champs balises Set oNom = xmlDoc.createElement("nom") oNom.Text = "LENOM" oElement.appendChild oNom Set oNom = Nothing Set oPrenom = xmlDoc.createElement("prenom") oPrenom.Text = "Prénom" oElement.appendChild oPrenom Set oPrenom = Nothing Set oElement = Nothing '-- Indenter le fichier créé set rdr = CreateObject("MSXML2.SAXXMLReader") set wrt = CreateObject("MSXML2.MXXMLWriter") Set oStream = CreateObject("ADODB.STREAM") oStream.Open 'Ouverture objet stream.. oStream.Charset = "ISO-8859-1" wrt.indent = True wrt.encoding = "ISO-8859-1" wrt.output = oStream ' "Connexion" de l'objet Writer à l'objet Stream Set rdr.contentHandler = wrt Set rdr.errorHandler = wrt rdr.Parse xmlDoc wrt.flush ' Sauver le fichier créé oStream.SaveToFile "test1.xml", 2 ' Détruire les objets Set rdr = Nothing Set wrt = Nothing Set xmlDoc = Nothing Résultat : XML <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> - 31 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ XML <Racine Create="03/03/2007"> <element ID="1"> <nom>LENOM</nom> <prenom>Prénom</prenom> </element> </Racine> Comment ouvrir un document XML existant ? Auteurs : bbil , Le code ci-dessous utilise la classe Microsoft.XMLDOM, permettant d'accéder aux documents de type XML : '-- Lire un document XML Set xmlDoc=CreateObject("Microsoft.XMLDOM") 'La desactivation du mode asynchrone permet de charger entièrement le document en mémoire avant le traitement xmlDoc.Async="false" 'Charger le document en mémoire xmlDoc.Load("c:\test1.xml") For each x in xmlDoc.documentElement.childNodes Msgbox x.nodename & " : " & x.text Next Set xmlDoc = Nothing Comment ajouter un attribut à une balise XML ? Auteurs : Forum , ThierryAIM , La méthode SetAttribute de l'objet Element permet de spécifier un attribut pour une balise XML. Un attribut se compose de 2 paramètres : - un identificateur - la valeur de l'attribut Reprenons l'exemple précédent et ajoutons un attribut Date au noeud racine et un attribut ID pour le noeud element : '-- Créer un doc XML Set xmlDoc = CreateObject("Microsoft.XMLDOM") Set oCreation = xmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'") xmlDoc.insertBefore oCreation, xmlDoc.childNodes.Item(0) ' Créer et ajouter la racine dans le document ' ATTENTION : il ne peut y avoir qu'un seul noeud racine dans un doc XML Set oRacine = xmlDoc.createElement("Racine") ' Ajouter un attribut Date de création du document oRacine.setAttribute "Créé_le", FormatDateTime(Date, vbGeneralDate) ' Ajouter la racine dans le document xmlDoc.appendChild oRacine ' Ajouter un élément Set oElement = xmlDoc.selectSingleNode("Racine") Set oElement = xmlDoc.createElement("element") ' positionnement sur la racine ' création d'un fils membre - 32 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ ' Ajouter un attribut ID à l'élément créé oElement.setAttribute "ID", "1" xmlDoc.documentElement.appendChild oElement ' crée le fils de la racine ' Ajouter des champs balises Set oNom = xmlDoc.createElement("nom") oNom.Text = "LENOM" oElement.appendChild oNom Set oNom = Nothing Set oPrenom = xmlDoc.createElement("prenom") oPrenom.Text = "Prénom" oElement.appendChild oPrenom Set oPrenom = Nothing Set oElement = Nothing ' Sauver le fichier créé xmlDoc.save ("test1.xml") Set xmlDoc = Nothing Résultat : XML <?xml version="1.0" encoding="ISO-8859-1"?> <Racine Créé_le="19/02/2007"> <element ID="1"> <nom>LENOM</nom> <prenom>Prénom</prenom> </element> </Racine> lien : Comment créer un nouveau document XML ? Comment accéder aux valeurs d'un noeud par le nom de balise ? Auteurs : Forum , ThierryAIM , C'est bien gentil de créer un document XML, encore faut-il pouvoir accéder à son contenu et en retirer les informations qui nous intéressent : Sur la base de l'exemple précédent, comment récupérer les valeurs de la balise nom en utilisant la méthode getElementsByTagName : VBS '-- Lire un doc XML Set xmlDoc=CreateObject("Microsoft.XMLDOM") xmlDoc.async="false" ' permet de charger entièrement le document en mémoire avant le traitement xmlDoc.load("test1.xml") ' Lister les valeurs par nom de balise Set oElement = xmlDoc.documentElement If Not oElement Is Nothing Then For Each x In oElement.getElementsByTagName("nom") MsgBox x.Text Next - 33 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ VBS End If lien : Comment ajouter un attribut à une balise XML ? Comment accéder aux attributs d'une balise ? Auteurs : bbil , La méthode GetAttribute de l'objet Element permet d'accéder aux attributs d'une balise noeud : VBS '-- Lire un doc XML Set xmlDoc = CreateObject("Microsoft.XMLDOM") xmlDoc.async = "false" xmlDoc.load("test1.xml") ' Pour tous les noeuds "element", renvoie l'attribut "ID" ' Attention à la casse ! For Each oElement In xmlDoc.getElementsByTagName("element") MsgBox oElement.getAttribute("ID") Next Comment valider un XML via un XSD en VB avec MSXML et sans .Net sous Windows ? Auteurs : ckeromen , L'aide en ligne accompagnant XML Parser SDK donne des exemples dans plusieurs langages, ci-dessous un squelette en VBScript. Remplacer les expressions entre accolades par les valeurs réelles ou des paramètres (ex.: {namespace}) : vb Dim WshShell Set WshShell=CreateObject("WScript.Shell") Dim xmlDoc set xmlDoc=CreateObject("Msxml2.DOMDocument.6.0") xmlDoc.async=false xmlDoc.validateOnParse=true Dim xmlSchema set xmlSchema=CreateObject("Msxml2.DOMDocument.6.0") xmlSchema.async=false xmlSchema.validateOnParse=true xmlSchema.load {le chemin d acces au schema} Dim xsdCache set xsdCache=CreateObject("Msxml2.XMLSchemaCache.6.0") xsdCache.add {namespace}, xmlSchema Set xmlDoc.schemas = xsdCache xmlDoc.load {le chemin d acces au fichier XML} Set myErr=xmlDoc.parseError If(myErr.errorCode<>0)Then WScript.Echo("errorReason="+myErr.reason) else WScript.Echo("ok") End If - 34 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Base de donnée Comment créer une base mdb, en DAO ? Auteurs : bbil , en utilisant la bilbliothéque Microsoft DAO 3.6 Object Library : vb Const dbInteger =3 Const dbText = 10 Set oDAO36 = CreateObject("DAO.DBEngine.36") Set oBase = oDAO36.CreateDatabase("Mabase.MDB", ";LANGID=0x0409;CP=1252;COUNTRY=0", 64) Set oTable = oBase.CreateTableDef("Table1") oTable.Fields.Append oTable.CreateField("Champ1", dbInteger) oTable.Fields.Append oTable.CreateField("Champ2", dbText, 50) oBase.TableDefs.Append oTable oBase.Close lien : Définition et manipulation de données avec DAO - 35 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Manipulation des chaînes de caractères Comment extraire une partie d'une chaîne ? Auteurs : bbil , On retrouve les fonctions habituelles d'extraction d'une partie de chaîne de Visual basic : • • • Left(chaîne, NombreDeCaracteres) : Pour extraire la partie gauche de la chaîne donnée en paramètre Right(chaîne, NombreDeCaracteres) : Pour extraire la partie droite de la chaîne donnée en paramètre Mid(chaîne, posdepart, NombreDeCaracteres) : Pour extraire le nombre de caractères spécifiés, à partir d'un caractère donné (posdepart) VBS Dim st st="Bienvenue sur DVP" Wscript.Echo Left(st,9) Wscript.Echo Mid(st,11,3) Wscript.Echo Right(st,3) Résultat Bienvenue sur DVP Nota: Pour la fonction Mid si le troisième paramètre (NombreDeCaracteres) est omis ou supérieur au nombre de caractères disponibles dans la chaîne après la position de départ, le caractère en position de départ et tous les caractères qui lui succèdent sont retournés. ce qui donne : VBS Dim st st="Bienvenue sur DVP" Wscript.Echo Mid(st,11) Wscript.Echo Mid(st,11,255) Résultat sur DVP sur DVP Comment connaitre la longueur d'un chaîne ? Auteurs : bbil , En utilisant la fonction Len() : VBS Dim st st="Bienvenue sur DVP" Wscript.Echo Len(st) Résultat - 36 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Résultat 17 Comment concaténer deux chaînes ? Auteurs : bbil , L'opérateur usuel de concaténation est : & VBS Dim st1 Dim st2 ' ' Concaténation de la "valeur" de 2 variable ' st1 = "Bienvenue " st2 = "sur dvp" Wscript.Echo st1 & st2 ' Une chaîne et une variable : Wscript.Echo st1 & " a vous" ce qui donne : Bienvenue sur dvp Bienvenue a vous Il est aussi possible (mais déconseillé) d'utiliser l'opérateur : + Celui-ci se comporte en opérateur de concaténation lorsque les 2 membres de l'opération sont des chaînes VBS Wscript.Echo "à voir " + st2 'Attention dans l'utilisation de l'opérateur + Wscript.Echo "1" + "2" Résultat à voir sur dvp 12 et en opérateur d'addition lorsque l'un des opérantes est numérique VBS Wscript.Echo "3" + 2 Wscript.Echo 1+2 Résultat 5 3 Une mauvaise utilisation de l'opérateur +, peut provoquer une erreur de type : Erreur d'exécution Microsoft VBScript: Type incompatible: '[string: "a"]' VBS Wscript.Echo "a" + 1 - 37 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ la chaîne "a" ne pouvant pas être additionnée à la valeur numérique 1. Comment "éclater" une chaîne dans un tableau ? Auteurs : bbil , la fonction Split permet "d'éclater" le contenu d'une chaîne dans un tableau, en fonction d'un caractère séparateur VBS Dim st,i,tb st="Antoine,Pierre,Jacques,Alain" tb = split(st,",") For i = lbound(tb) to ubound(tb) Wscript.echo tb(i) next Résultat Antoine Pierre Jacques Alain Nota: les fonctions Lbound et Ubound permettent de renvoyer les limites basse et haute des index d'un tableau. La fonction Split renvoyant un tableau dont l'index le plus bas est toujours 0, on aurai pu écrire : For i = 0 to ubound(tb) Comment transformer un tableau en une chaîne? Auteurs : bbil , Il existe un pendant à la fonction Split : la fonction Join qui permet de regrouper tous les éléments d'un tableau de chaîne en une chaîne, tout en précisant un séparateur : VBS Dim st,tb(3) Tb(0)="Antoine" tb(1)="Pierre" tb(2)="Jacques" tb(3)="Alain" st = join(tb,",") Wscript.echo st Résultat Antoine,Pierre,Jacques,Alain - 38 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Nota: Si le caractère de séparation est omis, un espace est utilisé. Comment rechercher une chaîne de caractères dans une autre ? Auteurs : Romain Puyfoulhoux , Instr(p,ch1,ch2) recherche la chaîne ch2 dans ch1 à partir de la position p. Si ch2 est trouvée, la valeur renvoyée est la position de son premier caractère dans ch1, sinon la fonction renvoie 0. vb pos = InStr(4, "Nous sommes au mois de Juillet.", "Juillet") pos = InStr(27, "Nous sommes au mois de Juillet.", "Juillet") 'renvoie 24 'renvoie 0 Comment utiliser les expressions régulières ? Auteurs : Romain Puyfoulhoux , La librairie Microsoft VBScript Regular Expressions permet d'utiliser des expressions régulières dans Visual Basic. Il faut l'ajouter dans les références du projet. Le principe consiste à créer un objet RegExp, à le paramétrer en modifiant ses propriétés, puis à lancer la recherche en appelant la méthode Execute(). Vous devez passer en paramètre la chaîne de caractères dans laquelle vous souhaitez faire une recherche. La méthode Execute renvoie les occurrences dans une collection. Si vous avez donné la valeur True à la propriété Global de l'objet RegExp, cette collection contiendra toutes les occurrences, sinon seulement la première. Voici comment vérifier la validité d'une adresse email. Ce code a été écrit avec la version 5.5 de la librairie. vbs Public Function EmailValide(ByVal email ) Dim regEx , occurrences Set regEx = New RegExp regEx.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,3}$" regEx.IgnoreCase = True 'Ne pas distinguer les minuscules des majuscules regEx.Global = False 'Renvoyer seulement la première occurrence Set occurrences = regEx.Execute(email) EmailValide = (occurrences.Count = 1) End Function Comment tester une chaîne de caractères avec une expression régulière ? Auteurs : Baptiste Wicht , Il faut pour cela utiliser l'objet RegExp qui va permettre de valider une chaîne de caractères en fonction d'un pattern : vbs Set RegularExpressionObject = New RegExp Ensuite, il faut le paramétrer en fonction de la recherche : With RegularExpressionObject .Pattern = Pattern - 39 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ .IgnoreCase = Boolean End With La pattern est l'expression régulière et IgnoreCase permet d'indiquer s'il faut prendre en compte ou non la casse. Ensuite, une fois l'objet paramétré, il suffit d'utiliser la méthode Test avec la chaîne à tester en paramètre : RegularExpressionObject.Test(aTester) Cette méthode va nous renvoyer True ou False en fonction du résultat. Voici par exemple, la méthode pour valider une adresse IP : vbs Set RegularExpressionObject = New RegExp With RegularExpressionObject .Pattern = "^((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d)$" .IgnoreCase = False End With MsgBox RegularExpressionObject.Test("172.16.18.21") MsgBox RegularExpressionObject.Test("300.22.194.37") Ce qui nous retourne true pour la première chaîne et False pour la seconde. III-B. Les expressions régulières Comment interpréter une chaîne string ? Auteurs : Sadneth , shwin , En utilisant la méthode Eval : vbs Dim toto toto = "SUPER * 10" MsgBox Eval(Replace(toto, "SUPER", 500)) - 40 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Manipulation des dates Comment récupérer la date et l'heure courante ? Auteurs : Baptiste Wicht , Pour récupérer la date et l'heure courante sous forme de chaîne , il suffit d'utiliser la variable prédéfinie Now. Voici ce que vaut la variable Now à l'heure ou j'écrit ces lignes : 15.11.2007 09:23:23 Cette variable est donc très pratique pour l'affichage. Mais si on désire faire des calculs sur des parties de l'heure courante seulement, par exemple, si on a besoin de récupérer les secondes, ce n'est pas très pratique. On pourrait bien évidemment parser la chaîne pour récupérer ce dont on a besoin, mais on a pas besoin de se donner ce mal, car VBS possède déjà les fonctions nécessaires : • • • • • • Year : Retourne l'année de la date Month :Retourne le mois de la date Day : Retourne le jour de la date Hour : Retourne l'heure de la date Minute : Retourne les minutes de la date Second : Retourne les secondes la date Il suffit de passer Now en paramètre de ces fonctions pour récupérer les éléments voulus. VBS WScript.Echo Day(Now)& "."& Month(Now)& "."& Day(Now)& "."& Year(Now)& " "& Hour(Now)& ":"& Minute(Now)& ":"& Se Comment récupérer le nom du jour de la semaine dans une variable ? Auteurs : bbil , Grâce à une combinaison de la fonction WeekDay qui, à partir d'une date, renvoi le numéro (1 à 7 ) du jour de la semaine... et la fonction WeekDayName qui, à partir de ce numéro, renvoi le nom du jour : VBS Dim d 'date à traiter Dim stJs ' chaine jour de la semaine.. d = now ' date actuelle stJS = WeekDayName(WeekDay(d)) Wscript.Echo " Nous sommes un : " & stJs Obtenir mois sur deux caractères ? Auteurs : omen999 , L'emploi de deux fonctions simples permet d'extraire le mois d'une date tout en le formatant sur deux caractéres. vb dDate = CDate("1/2/10") MsgBox Right("0" & Month(dDate),2) - 41 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > VB Script > Manipuler la base de registre Comment manipuler la base de registre ? Auteurs : bbil , L'objet WshShell possède trois méthodes permettant de manipuler la base de registre : 1 RegWrite : pour écrire dans la base de registre 2 RegRead : pour lire une entrée de la base de registre 3 RegDelete : pour effacer une clef ou sa valeur de la base de registre Ces trois méthodes utilisent comme premier paramètre le nom de la clé concernée. Pour, construire ce nom, des abréviations peuvent être utilisées : Nom de clé racine Abréviation HKEY_CURRENT_USER HKCU HKEY_LOCAL_MACHINEHKLM HKEY_CLASSES_ROOT HKCR HKEY_USERS HKEY_USERS HKEY_CURRENT_CONFIG HKEY_CURRENT_CONFIG Pour plus d'informations sur la base de registre, et quelques-unes des utilisations possible, voir : la faq Windows XP : http://windows.developpez.com/faq/xp/index.php?rechercher=registre Comment écrire dans la base de registre ? Auteurs : bbil , Pour écrire dans la base de registre, on utilise la méthode RegWrite de l'objet WshShell la documentation Microsoft nous décrit la fonction ainsi : object.RegWrite(strName, anyValue [,strType]) Arguments object Objet WshShell. strName Valeur de chaîne indiquant le nom de la clé, le nom de la valeur ou la valeur que vous voulez créer, ajouter ou modifier. anyValue Nom de la nouvelle clé que vous voulez créer, nom de la valeur que vous voulez ajouter à une clé existante ou nouvelle valeur que vous voulez assigner à un nom de valeur existant. strType Facultatif. Valeur de chaîne indiquant le type de données de la valeur Le paramètre facultatif strType permet d'indiquer le type données : Nom de clé racine Chaîne Chaîne Nombre entier Nombre entier strType REG_SZ REG_EXPAND_SZ REG_DWORD REG_BINARY vb Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.RegWrite "HKCU\Software\dvp-faqvbs\montest",now - 42 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ La fonction now renvoie ici la date et l'heure courante sous la forme d'une chaîne de caractères. Comment lire la base de registre ? Auteurs : bbil , La Méthode RegRead permet de lire la base de registre. Elle ne prend qu'un argument : le nom de la clé ( qui peu comporter des abréviations ..) vb Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") msgbox WshShell.RegRead ("HKCU\Software\dvp-faqvbs\montest") Comment supprimer une "valeur" où une clé de la base de registre ? Auteurs : bbil , La méthode RegDelete permet d'effacer une entrée de la base de registre. Elle ne prend qu'un argument : le nom de la clé ( qui peu comporter des abréviations ..) vb Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.RegDelete ("HKCU\Software\dvp-faqvbs\montest") Cette même méthode permet aussi d'effacer une clé (en terminant le nom de la clé par un \): vb Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.RegDelete ("HKCU\Software\dvp-faqvbs\") Comment associer une extension à un programme ? Auteurs : Jean-Marc Rabilloud , Khorne , Le principe repose sur la création de plusieurs clés dans la base de registre. Une des méthodes est l'utilisation du Windows Script Host Object Model. vb Dim MaCle Set MaCle = CreateObject("WScript.Shell") 'nom de votre type de fichier MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\", "Test Ext", "REG_SZ" 'commande a exécuter pour ouvrir les fichiers de ce type MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\shell\open\command\", "C:\jmarc\FAQ \TestExt.exe %1", "REG_SZ" 'icone à utiliser pour représenter les fichiers de ce type, ici la troisième icone contenue dans TestExt.exe '(la première icone a l'index 0) MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\DefaultIcon\", "C:\jmarc\FAQ\TestExt.exe,2", "REG_SZ" 'extension correspondant à ce type de fichier - 43 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ vb MaCle.RegWrite "HKEY_CLASSES_ROOT\.jmr\", "Test Ext", "REG_SZ" Suite à l'application de ce script, tout fichier ayant une extension ".jmr" sera ouvert avec le programme TestExt.exe. Comment désactiver le gestionnaire des tâches ou la séquence de touches Ctrl-Alt-Suppr ? Auteurs : Khorne , Pour Windows 2000 et supérieur : Cette astuce permet de désactiver ou d'activer le gestionnaire des tâches à partir du code de votre programme et donc, d'inhiber la séquence de touches Ctrl-Alt-Suppr. Lorsque le gestionnaire est désactivé, le système renvoie un message d'avertissement (A utiliser avec précaution) : Désactiver : vb Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System \DisableTaskMgr", "1" Set WshShell = Nothing Activer : vb Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System \DisableTaskMgr", "" Set WshShell = Nothing - 44 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > WMI : Windows Management Instrumentation Définition Auteurs : ThierryAIM , WMI (l'abréviation de Windows Management Instrumentation) est l'adaptation par Microsoft de la technologie de management des ressources WBEM (Web-Based Enterprise Management WBEM). Les possibilités de WMI sont immenses. Intégré depuis Windows 2000, WMI permet d'accéder rapidement et simplement à toutes les ressources du système, telles que : • • • • • • • • Dispositifs de stockage de masses (disques durs, ...) Carte mère, mémoire, ... Fichiers système Paramètres du système d'exploitation Processus Services Windows Base de registre etc ... Vous trouverez une excellente introduction à WMI par Laurent Dardenne au lien ci-dessous. Dans cette FAQ, nous nous attacherons principalement aux exemples d'utilisation dans VBScript. lien : Windows Management Instrumentation ( WMI ), première partie par Laurent Dardenne lien : Microsoft MSDN: A propos de WMI - 45 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > WMI : Windows Management Instrumentation > Processus : classe Win32_Process Comment lister les processus actifs ? Auteurs : ThierryAIM , En utilisant la classe Win32_process ; VBS Set objWMI = GetObject("winmgmts:root\cimv2") sQuery = "Select * from Win32_process" For Each oproc In objWMI.execquery(sQuery) Wscript.echo oproc.Name & " = " & oproc.ExecutablePath Next Set objWMI = Nothing lien : Microsoft Win32 Process WMI class Comment "tuer" un processus en mémoire ? Auteurs : ThierryAIM , cedric600 , Un script WMI utilisant la classe Win32_process pour obtenir la liste des processus actifs, puis la méthode Terminate pour fermer le processus sélectionné : VBS strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process Where Name = 'Notepad.exe'") For Each objProcess in colProcessList objProcess.Terminate() Next - 46 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > WMI : Windows Management Instrumentation > Services : classe Win32_Service Comment lister les services actifs ? Auteurs : cedric600 , En utilisant la classe Win32_Service : VBS strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Service",,48) For Each objItem in colItems Wscript.Echo "Service : " & objItem.Name & " : " & objItem.State Next Set colItems = Nothing Set objWMIService = Nothing lien : Microsoft Win32 Service class - 47 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > WMI : Windows Management Instrumentation > Imprimantes : classe Win32_Printer Comment lister les imprimantes installées ? Auteurs : SilkyRoad , Lister les imprimantes installées et préciser laquelle est active : VBS Dim objWMIService, colInstalledPrinters, objPrinter Dim nomPC, Resultat nomPC = "." Set objWMIService = GetObject("winmgmts:" & _ "{impersonationLevel=impersonate}!\\" & nomPC & "\root\cimv2") Set colInstalledPrinters = _ objWMIService.execQuery("Select * from Win32_Printer") For Each objPrinter In colInstalledPrinters Resultat = Resultat & "Nom: " & objPrinter.Name & " active : " _ & objPrinter.Default & vbLf Next MsgBox Resultat Comment lister les propriétés des imprimantes installées ? Auteurs : SilkyRoad , Cet exemple liste toutes les propriétés des imprimantes renvoyées pas la classe Win32_PrinterConfiguration : VBS Dim objWMIService, colPrinters, objItem Dim strComputer On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colPrinters = objWMIService.ExecQuery("Select * from Win32_PrinterConfiguration")', , 48) For Each objItem In colPrinters Wscript.echo "Caption: " & objItem.Caption & vbCR & _ "Collate: " & objItem.Collate & vbCR & _ "Color: " & objItem.Color & vbCR & _ "Copies: " & objItem.Copies & vbCR & _ "Description: " & objItem.Description & vbCR & _ "DeviceName: " & objItem.DeviceName & vbCR & _ "DisplayFlags: " & objItem.DisplayFlags & vbCR & _ "DisplayFrequency: " & objItem.DisplayFrequency & vbCR & _ "DitherType: " & objItem.DitherType & vbCR & _ "DriverVersion: " & objItem.DriverVersion & vbCR & _ "Duplex: " & objItem.Duplex & vbCR & _ "FormName: " & objItem.FormName & vbCR & _ "HorizontalResolution: " & objItem.HorizontalResolution & vbCR & _ "ICMIntent: " & objItem.ICMIntent & vbCR & _ "ICMMethod: " & objItem.ICMMethod & vbCR & _ "LogPixels: " & objItem.LogPixels & vbCR & _ "MediaType: " & objItem.MediaType & vbCR & _ "Nom: " & objItem.Name & vbCR & _ "Orientation: " & objItem.Orientation & vbCR & _ - 48 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ VBS "PaperLength: " & objItem.PaperLength & vbCR & _ "PaperSize: " & objItem.PaperSize & vbCR & _ "PaperWidth: " & objItem.PaperWidth & vbCR & _ "BitsPerPel: " & objItem.BitsPerPel & vbCR & _ "PelsHeight: " & objItem.PelsHeight & vbCR & _ "PelsWidth: " & objItem.PelsWidth & vbCR & _ "PrintQuality: " & objItem.PrintQuality & vbCR & _ "Scale: " & objItem.Scale & vbCR & _ "SettingID: " & objItem.SettingID & vbCR & _ "SpecificationVersion: " & objItem.SpecificationVersion & vbCR & _ "TTOption: " & objItem.TTOption & vbCR & _ "VerticalResolution: " & objItem.VerticalResolution & vbCR & _ "XResolution: " & objItem.XResolution & vbCR & _ "YResolution: " & objItem.YResolution Next Comment arrêter l'impression en cours et vider la file d'attente ? Auteurs : SilkyRoad , VBS Dim objWMIService, colInstalledPrinters, objPrinter Dim strComputer strComputer = "." Set objWMIService = _ GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colInstalledPrinters = _ objWMIService.ExecQuery("Select * from Win32_Printer") For Each objPrinter In colInstalledPrinters objPrinter.CancelAllJobs Next Wscript.echo "OK" Set objWMIService = Nothing Set colInstalledPrinters = Nothing - 49 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > WMI : Windows Management Instrumentation > Réseaux Comment faire un ping réseau grâce à WMI ? Auteurs : Forum , Pour Windows Server 2003, XP et supérieur, en utilisant la classe Win32_PingStatus : VBS strComputer = InputBox ("Adresse IP ou Url à 'Pinger' ") On Error Resume Next msgbox ("Ping de : " strComputer) Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\ \").ExecQuery("select * from Win32_PingStatus where address = '" & strComputer & "'") For Each objStatus in objPing If objStatus.Statuscode = 0 Then msgbox ("TEST OK : " & objStatus.Statuscode) else msgbox ("TEST NOK : " & objStatus.Statuscode) End If Next Pour Windows 2000, en utilisant l'objet Shell de WScript: VBS strComputer = "10.169.6.16" 'Ping version Win2000 Set objShell = CreateObject("WScript.Shell") Set objScriptExec = objShell.Exec( _ "ping -n 2 -w 1000 " & strComputer) strPingResults = LCase(objScriptExec.StdOut.ReadAll) If InStr(strPingResults, "perdus = 0") Then msgbox (strComputer & " repond au ping !") Else msgbox (strComputer & " na pas repondu au ping!") End If lien : Microsoft MSDN: Win32_PingStatus Comment obtenir les informations issues des cartes réseau à la manière d'un IPCONFIG ? Auteurs : bbil , Le code suivant permet d'afficher l'état des configurations des cartes réseaux d'un PC : VBS Computer=InputBox ("Nom de l'ordinateur à tester où rien pour celui-ci : ","IpConfig") On error resume next set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).ExecQuery _ ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE") If Err.Number<>0 Then wscript.echo " - non accessible -" Else for each IPConfig in IPConfigSet MsgBox " Configuration réseau de l'ordinateur " & computer & vbcrlf & vbcrlf & _ " Carte " & vbtab & vbtab & " : " & IPConfig.Description & vbcrlf & _ " adresse MAC " & vbtab & " : " & IPConfig.MACAddress & vbcrlf & _ - 50 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ VBS " adresse IP " & vbtab & " : " & IPConfig.IPAddress(0) & vbcrlf & _ " DNSHostName " & vbtab & " : " & IPConfig.DNSHostName _ ,,"Configuration " Next End If - 51 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > WSH : Windows Scripting Host Définition Auteurs : ThierryAIM , Source Microsoft® : WSH (l'abréviation pour Microsoft® Windows® Script Host) est un hôte de script indépendant du langage utilisé pour les moteurs de script compatibles avec Windows Script. Il vous permet d'écrire facilement des scripts très puissants et très souples à destination des plates-formes Windows 32 bits, que vous pouvez exécuter depuis le bureau de Windows ou l'invite de commande. Windows Script Host est idéal pour les scripts non interactifs, tels que les scripts de connexion, d'administration ou d'automatisation d'ordinateurs. Dans cette FAQ, nous nous attacherons principalement aux exemples d'utilisation dans VBScript. - 52 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > WSH : Windows Scripting Host > Shell (wshShell) Comment exécuter un programme externe ? Auteurs : bbil , La méthode Run de l'objet WshShell permet cela : Exécution "bloquante" de la calculatrice Windows. VBS Set WshShell = WScript.CreateObject("WScript.Shell") Return = WshShell.Run("calc" , 1, true) MsgBox "Fin utilisation calculatrice" Paramètres de WshShell.Run strCommand,intWindowStyle,bWaitOnReturn - strCommand : Chaîne de caractère, ligne de commande à exécuter - intWindowStyle : 1 : Active la fenêtre dans sa taille et position d'origine - bWaitOnReturn : à True, attend la fin de l'exécution du programme avant d'effectuer la suite.. avec intWindowStyle : 0 Masque la fenêtre et en active une autre. 1 Active et affiche une fenêtre. Si la fenêtre est réduite ou agrandie, le système lui redonne sa taille et sa position d'origine. Une application doit spécifier cette indication lors du premier affichage de la fenêtre. 2 Active la fenêtre et l'affiche en taille réduite. 3 Active la fenêtre et l'affiche en taille agrandie. 4 Affiche une fenêtre en respectant sa taille et sa position les plus récentes. La fenêtre active reste active. 5 Active la fenêtre et l'affiche d'après sa taille et sa position actuelle. 6 Réduit la fenêtre spécifiée et active la fenêtre de niveau supérieur suivante dans l'ordre alphabétique. 7 Affiche la fenêtre sous l'aspect d'une fenêtre réduite. La fenêtre active reste active. 8 Affiche la fenêtre dans son état actuel. La fenêtre active reste active. 9 Active et affiche la fenêtre. Si la fenêtre est réduite ou agrandie, le système lui redonne sa taille et sa position d'origine. Une application doit spécifier cet indicateur lors de la restauration d'une fenêtre réduite. 10 Définit l'état d'affichage en fonction de l'état du programme qui a démarré l'application. Comment lister les dossiers spéciaux de Windows ? Auteurs : ThierryAIM , La propriété SpecialFolders de l'objet WshShell permet d'obtenir les références aux dossiers spéciaux de Windows (Bureau, Favoris,etc... Liste des dossiers spéciaux de Windows disponibles : • • • • • • • • • • • AllUsersDesktop AllUsersStartMenu AllUsersPrograms AllUsersStartup Desktop Favorites Fonts MyDocuments NetHood PrintHood Programs - 53 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ • • • • • Recent SendTo StartMenu Startup Templates VBS Set WshShell = WScript.CreateObject("WScript.Shell") For i = 0 to WshShell.SpecialFolders.Count -1 sf = sf & WshShell.SpecialFolders(i) & vbCr Next MsgBox sf,,"Répertoires spéciaux de Windows" Accéder à un dossier particulier, dont on connaît le nom (le Bureau, dans l'exemple ci-dessous) : VBS Set WshShell = WScript.CreateObject("WScript.Shell") MsgBox WshShell.SpecialFolders("Desktop") Comment écrire dans le journal d'évènements de Windows ? Auteurs : Catbull , VBS Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.LogEvent 0, "Execution du script" lien : Microsoft Windows Script Host : LogEvent method Comment simuler l'envoi de caractères vers une application externe ? Auteurs : Forum , ThierryAIM , La méthode SendKeys de l'objet WScript permet d'envoyer une ou plusieurs entrées clavier à la fenêtre active. Pour spécifier les touches d'actions (qui ne sont pas des caractères), voir le tableau ci-dessous : - 54 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Touche RETOUR ARRIERE VERR. MAJ VERR. NUM ARRET DEFIL IMPR. ECRAN FLÈCHE VERS LE BAS, LE HAUT, A GAUCHE, A DROITE PAGE SUIVANTE, PRECEDENTE ENTREE ORIGINE FIN ECHAP INSERT SUPPR TAB F1 à F16 Code {BACKSPACE}, {BS}, ou {BKSP} {CAPSLOCK} {NUMLOCK} {SCROLLLOCK} {PRTSC} (Ne peut être envoyé à une application externe) {DOWN}, {UP}, {LEFT}, {RIGHT} {PGDN}, {PGUP} {ENTER} ou ~ {HOME} {END} {ESC} {INSERT} ou {INS} {DELETE} ou {DEL} {TAB} {F1} ... {F16} Les touches d'altération : • • • Maj : + Ctrl : ^ Alt : % Elles s'utilisent en combinaison avec les touches à émettre : • • • "+ab" envoie Ab "+(ab)" envoie AB "{+a 5}" envoie AAAAA Exemple d'utilisation Ouvrir la calculatrice et effectuer une opération : VBS Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "calc" '-- Ouvre la calculatrice de Windows WScript.Sleep 200 WshShell.AppActivate "Calculatrice" '-- Active l'application WScript.Sleep 200 WshShell.SendKeys "4*2" WScript.Sleep 100 WshShell.SendKeys "{Enter}" Comment créer un raccourci vers un site internet où un programme sur le bureau de windows Auteurs : Forum , Source Microsoft VBScript Dim Shell, DesktopPath, URL - 55 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Source Microsoft VBScript Set Shell = CreateObject("WScript.Shell") DesktopPath = Shell.SpecialFolders("Desktop") Set URL = Shell.CreateShortcut(DesktopPath & "\MonForumPreferé.URL") URL.TargetPath = "http://www.developpez.net/forums" URL.WorkingDirectory = "c:\tmp" URL.Save On garde le même principe pour un programme : Dim Shell, DesktopPath, URL Set Shell = CreateObject("WScript.Shell") DesktopPath = Shell.SpecialFolders("Desktop") Set URL = Shell.CreateShortcut(DesktopPath & "\monraccourci.lnk") URL.IconLocation = "monicone.ico" URL.TargetPath = "chemin\monexe.exe" URL.WorkingDirectory = "c:\tmp" URL.Arguments = "-para monparametre" URL.Save SET oFS = nothing - 56 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > WSH : Windows Scripting Host > Réseau (wshNetwork) Comment connaître le nom réseau de l'ordinateur ? Auteurs : argyronet , VBS Set wshNetwork = CreateObject("Wscript.Network") MsgBox wshNetwork.ComputerName Comment connaître le nom de l'utilisateur réseau courant ? Auteurs : Jean-Marc Rabilloud , VBS Set wshNetwork = CreateObject("Wscript.Network") MsgBox wshNetwork.UserName Comment connaître le nom de domaine de l'utilisateur courant ? Auteurs : ThierryAIM , VBS Set wshNetwork = CreateObject("Wscript.Network") MsgBox wshNetwork.UserDomain Comment "mapper" une unité réseau à la manière du net use du dos ? Auteurs : bbil , VBS Set WshNetwork = WScript.CreateObject("WScript.Network") WshNetwork.MapNetworkDrive "R:","\\NOM_ORDINATEUR\REPERTOIRE",false,"NOM_UTILISATEUR","MOT_DE_PASSE" Comment "mapper" les imprimantes réseau ? Auteurs : ThierryAIM , VBS Set WshNetwork = WScript.CreateObject("WScript.Network") Set oPrinters = WshNetwork.EnumPrinterConnections For i = 0 to oPrinters.Count - 1 Step 2 MapPrinters = MapPrinters & "Port : " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1) & vbCr Next MsgBox MapPrinters,,"Mappage Imprimantes Réseau" - 57 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ Sommaire > WSH : Windows Scripting Host > Autres Comment accéder aux variables d'environnement de Windows ? Auteurs : ThierryAIM , L'objet WshEnvironment contient les variables d'environnement de Windows: Vous pouvez accéder aux variables de type : • Process • System • User • Volatile L'exemple suivant affiche le nom de l'utilisateur courant : VBS Set WshShellObj = WScript.CreateObject("WScript.Shell") Set WshProcessEnv = WshShellObj.Environment("Process") WScript.Echo WshProcessEnv("USERNAME") L'exemple suivant affiche la variable d'environnement PATH du système : VBS Set WshShell = WScript.CreateObject("WScript.Shell") Set WshProcessEnv = WshShell.Environment("Process") WScript.Echo "PATH = " & WshProcessEnv("PATH") L'exemple suivant affiche les informations du processeur : VBS Set WshShell = WScript.CreateObject("WScript.Shell") Set WshSysEnv = WshShell.Environment("System") WScript.Echo WshSysEnv("PROCESSOR_ARCHITECTURE") & vbCr _ & WshSysEnv("PROCESSOR_IDENTIFIER") & vbCr _ & WshSysEnv("PROCESSOR_LEVEL") & vbCr _ & WshSysEnv("PROCESSOR_REVISION") La propriété Count de l'objet WshEnvironment renvoie le nombre de variables d'environnement dans le type sélectionné : VBS Set WshShell = WScript.CreateObject("WScript.Shell") Set WshProcessEnv = WshShell.Environment("Process") WScript.Echo WshProcessEnv.Count Comment créer ou effacer une variable environnement ? Auteurs : l_autodidacte , ProgElecT , bbil , La propriété Environment de l'objet WshShell renvoie une collection WshEnvironment de variables. - 58 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/ La création d'une variable se fait lors de l'affectation à une valeur, la méthode remove permet d'effacer la variable environnement vb Dim WshShell, WshProcessEnv Set WshShell = WScript.CreateObject("WScript.Shell") Set WshProcessEnv = WshShell.Environment("Process") 'Créer une variable d'environnement WshProcessEnv("DVP") = "developpez.com" 'Affiche la variable WScript.Echo WshShell.ExpandEnvironmentStrings("La valeur de la variable DVP = '%DVP%'") WshProcessEnv.Remove "DVP" WScript.Echo WshShell.ExpandEnvironmentStrings("Aprés l'avoir effacée : '%DVP%'") Comment jouer un son ? Auteurs : Forum , bbil , En utilisant un appel à l'application magnétophone de Windows. vb Option explicit Dim stFicSon,WshShell Set WshShell = WScript.CreateObject("WScript.Shell") stFicSon = "C:\WINDOWS\Media\chimes.wav" WshShell.Run "sndrec32 /play /embedding /close " & stFicSon , 0, true Appel dynamique d'une fonction via une variable ? Auteurs : omen999 , en utilisant GetRef vb Function AddNum(lNum1,lNum2) AddNum = lNum1 + lNum2 End Function Function MultNum(lNum1,lNum2) MultNum = lNum1 * lNum2 End Function Set FuncVar = GetRef("AddNum") MsgBox FuncVar(5,6) Set FuncVar = GetRef("MultNum") MsgBox FuncVar(5,6) - 59 Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://vb.developpez.com/