Interface web dynamique permettant la selection de données d'un fichier csv [vbscript]


Description

Cet utilitaire permet de:
rechercher et selectionner des données dans un fichier csv ou txt
appliquer des actions sur les objets selectionnés

Dans cet exemple, j'utilise cet utilitaire pour la gestion des pc du réseau:
les démarrer, les arreter, les redemarrer
détecter s'ils sont allumé et qui est connecté
recupérer / mettre à jour l'adresse mac des postes

Source / Exemple :


''/*****************************************************************************/
'/*** utilitaire réseau permettant de:
'/***           rechercher et selectionner des ordinateurs du réseau,
'/***           les démarrer, les arreter, les redemarrer
'/***           détecter s'ils sont allumé et qui est connecté
'/***           recupérer / mettre à jour l'adresse mac des postes
'/***
'/*** NB: Il va sans dire que cet utilitaire doit êtres lancé par un compte administrateur du domaine
'/***     Pour le démarrage des postes j'utilise l'utilitaire WolCmd.exe téléchargeable sur www.depicus.com
'/*****************************************************************************/
'variables à modifier suivant votre config
MacNameFile=""           'Chemin du fichier contenant tous les noms de machines du réseau. Si MacNameFile="" MacNameFile sera initialisé à [repwork]\mac-name.txt
CastIp="10.130.255.255"  'cast ip du réseau pour démarrage pc

' Avant d'utiliser ce programme, il convient tout d'abord de créer manuellement
' le fichier mac-name.txt de la manière suivante:
' Chaque ligne comporte au minimum 2 champs:   champ1;champ2;champ3;etc...
' champ1 correspond à l'adresse mac
' champ2 correspond au nom du pc
' champ3;etc correspond à des champs que vous pouvez rajouter pour d'autre prog partageant le même fichier
' NB: champ1 peut être vide car cet utilitaire permet de récupérer l'adresse mac d'un pc.
' Par exemple vous pouvez marquer dans le fichier:
'   ;NomPoste1;
'   00188B06C3A4;NomPoste2;
'   00188B06C3A4;NomPoste3;192.168.1.10;255.255.255.0;192.168.1.1;
'   ...etc
' Dans ActiveDirectory, il est possible d'exporter dans un fichier tous les noms des PC du domaine
' Il serait aussi possible d'intégrer dans ce script une détection des postes du domaine mais je ne suis pas sûr que le jeu en vaille la chandelle

On error resume next
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Const Overwrite = True
Const ForReading = 1
Const ForWriting = 2
Const Green="#008000"
Const Red="#FF0000"
Const Black="#000000"
Const Gray="#CCCCCC"
Dim shell, IE
' tableau pouvant contenir jusqu'à 500 lignes (à modifier suivant le nbre de pc)
Dim MacName(500, 4) '1:mac(1ier champ) 2:name(2ème champ) 3:MajMac(réservé maj mac) 4:tous les champs restants
Dim Inversion(500)  'contient le liste des index à inverser
dim PcSearch(500, 4) '1:indexMacName 2:selected 3:couleur affichage 4:username/mac
Set shell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
strComputer = "."
SelectedClass=""
SelectedStudent=""
textsearch=""
RepWork = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\")-1)
if trim(MacNameFile)="" then MacNameFile=RepWork & "\mac-name.txt"
'Charge tableau MacName
err.clear()
Set objfile = objFSO.OpenTextFile(MacNameFile, ForReading)
if err.number<>0 then
        MsgBox "Erreur d'ouverture du fichier '" & MacNameFile & "'." & vbCrLf & "Veuillez vérifier que le fichier existe et qu'il soit accessible.", vbCritical + vbOkOnly + vbSystemModal + 0,"Erreur ouverture fichiers"
        wscript.quit
end if
NbrePc=0
Do Until objfile.AtEndOfStream
        line=trim(objfile.ReadLine)
        MacName(NbrePc+1, 1)=trim(GetField(1, line, ";"))
        MacName(NbrePc+1, 2)=trim(GetField(2, line, ";"))
        MacName(NbrePc+1, 3)=""
        if MacName(NbrePc+1, 2)<>"" then
                index=GetIndexField(3, line, ";", 0)
                if index>0 and index<=len(line) then MacName(NbrePc+1, 4)=mid(line, index)
                NbrePc=NbrePc+1
        end if
loop
objfile.close
NbrePcSearch=0

' tri du tableau MacName + détection doublon
err=tritab()
if (err and 7)<>0 then
        ListingErr="Avertissement: le fichier '" & MacNameFile & "' contient des doublons:" & vbCrLf
        if (err and 1)<>0 then ListingErr=ListingErr & "       /*** ligne(s) strictement identique(s) ***/" & vbCrLf
        if (err and 2)<>0 then ListingErr=ListingErr & "       /*** ligne(s) contenant la même adresse MAC et un nom de pc différent ***/" & vbCrLf
        ListingErr=ListingErr & "Tous les doublons ont été supprimés. Voulez vous sauvegarder les modification?"
        err=MsgBox(ListingErr, vbQuestion + vbYesNo + vbSystemModal + 0,"Enregistrer les modifications dans le fichier?")
        if err=vbyes then 'sauvegarde le fichier
                if SavMacName()=true then
                        MsgBox "Le fichier '" & MacNameFile & "' a été mis à jour. ", vbInformation + vbOkOnly + vbSystemModal + 0,"Sauvegarde fichier"
                else
                        MsgBox "Erreur de mise à jour du fichier '" & MacNameFile & "'.", vbCritical + vbOkOnly + vbSystemModal + 0,"Sauvegarde fichier"
                end if
        end if
end if

'Lancement ie + affichage postes
OpenIE()
shell.AppActivate "Gestionnaire d'ordinateurs"
AffichePageWeb "startpc.htm"

RazEtatPc=false
do
        StartTime = Timer
        do
                WScript.Sleep 30
                action=GetActionPageWeb()
                if RazEtatPc=true then 'le username de chaque pc est affiché
                        difftime=Timer-StartTime
                        if difftime>60 then ' affichage du username pendant un labs de temps max de 60s (durée de validité de l'info)
                                for i=1 to NbrePcSearch
                                        PcSearch(i, 3)=Black
                                        PcSearch(i, 4)=""
                                next
                                RazEtatPc=false
                                AffichePageWeb "startpc.htm"
                        end if
                end if
        Loop While (action = "off")

        if action="demarrer" or action="arreter" or action="redemarrer" or action="macadress" then
                for i=1 to NbrePcSearch
                        execute "IsChecked=IE.Document.SelectionForm.cac_" & i & ".Checked"
                        if IsChecked then PcSearch(i, 2)=true else PcSearch(i, 2)=false
                        PcSearch(i, 3)=Gray
                        PcSearch(i, 4)=""
                next
                AffichePageWeb "startpc.htm"
                StartTime = Timer
                if action="demarrer" then
                        if objFSO.FileExists(RepWork & "\wolcmd.exe") then
                                for i=1 to NbrePcSearch
                                        if PcSearch(i, 2) and MacName(PcSearch(i, 1), 1)<>"" then
                                                commande=RepWork & "\wolcmd " & MacName(PcSearch(i, 1), 1) & " " & CastIp & " " & CastIp
                                                Shell.Run commande, 0, 0
                                                Wscript.Sleep 300
                                                Shell.Run commande, 0, 0
                                                Wscript.Sleep 300
                                                Shell.Run commande, 0, 0
                                                PcSearch(i, 3)=Black
                                                difftime=Timer-StartTime
                                                if difftime>2 then StartTime = Timer : AffichePageWeb "startpc.htm"
                                        end if
                                next
                        else
                                MsgBox "Impossible de lancer le démarrage des postes. " & vbCrLf & "Le fichier 'WolCmd.exe' n'a pas été trouvé dans le dossier de l'application." & vbCrLf & "Vous pouvez le télécharger sur <www.depicus.com>.",vbCritical + vbOkOnly + vbSystemModal + 0,"Fichier introuvable"
                        end if
                end if
                if action="arreter" or action="redemarrer" then
                        for i=1 to NbrePcSearch
                                if PcSearch(i, 2) then
                                        if action="arreter" then commande="shutdown -s -f -m \\" & MacName(PcSearch(i, 1), 2)
                                        if action="redemarrer" then commande="shutdown -r -f -m \\" & MacName(PcSearch(i, 1), 2)
                                        Shell.Run commande, 0, 0
                                        PcSearch(i, 3)=Black
                                        difftime=Timer-StartTime
                                        if difftime>2 then StartTime = Timer : AffichePageWeb "startpc.htm"
                                end if
                        next
                end if
                if action="macadress" then
                        IE.Document.Script.SetVal("off")
                        NewMac=false
                        for i=1 to NbrePcSearch
                                if PcSearch(i, 2) then
                                        if PcIsOn(MacName(PcSearch(i, 1), 2)) then
                                                MacTemp=GetMacAdress(MacName(PcSearch(i, 1), 2))
                                                if MacTemp="" then
                                                        PcSearch(i, 3)=red
                                                        PcSearch(i, 4)="[NotAccess]"
                                                else
                                                        if MacTemp=MacName(PcSearch(i, 1), 1) then
                                                                PcSearch(i, 3)=green
                                                                PcSearch(i, 4)="[" & MacTemp & "]"
                                                        else
                                                                PcSearch(i, 3)=red
                                                                PcSearch(i, 4)="new[**" & MacTemp & "**]"
                                                                MacName(PcSearch(i, 1), 3)=MacTemp
                                                                NewMac=true
                                                        end if
                                                end if
                                        else
                                                PcSearch(i, 3)=red
                                                PcSearch(i, 4)="[OffLine]"
                                        end if
                                end if
                                if GetActionPageWeb()<>"off" then
                                        ret=MsgBox("Arrêter le traitement?", vbQuestion + vbYesNo + vbSystemModal + 0,"Arrêt traitement")
                                        if ret=vbyes then exit for
                                end if
                                difftime=Timer-StartTime
                                if difftime>2 then StartTime = Timer : AffichePageWeb "startpc.htm"
                        next
                end if
                AffichePageWeb "startpc.htm"
                if NewMac=true then
                        ret=MsgBox("De nouvelles adresses Mac ont été trouvées. Mettre à jour le fichier mac-name.txt?", vbQuestion + vbYesNo + vbSystemModal + 0,"Enregistrer les MacAdress?")
                        if ret=vbyes then
                                if SavMacName()=true then
                                        for i=1 to NbrePc
                                                if MacName(i, 3)<>"" then MacName(i, 1)=MacName(i, 3) : MacName(i, 3)=""
                                        next
                                        MsgBox "Le fichier '" & MacNameFile & "' a été mis à jour. ", vbInformation + vbOkOnly + vbSystemModal + 0,"Sauvegarde MacAdress"
                                else
                                        MsgBox "Erreur de mise à jour du fichier '" & MacNameFile & "'.", vbCritical + vbOkOnly + vbSystemModal + 0,"Sauvegarde MacAdress"
                                end if
                        end if
                end if
        end if

        if action="rechercher" then
                NbrePcSearch=0
                textsearch=trim(IE.Document.SelectionForm.textsearch.value)
                if textsearch<>"" then
                        for i=1 to NbrePc
                                if IsFind(MacName(i, 2), textsearch) then
                                        NbrePcSearch=NbrePcSearch+1
                                        PcSearch(NbrePcSearch, 1)=i      'index MacName
                                        PcSearch(NbrePcSearch, 2)=true   'case à cocher=ON
                                        PcSearch(NbrePcSearch, 3)=Black  'pc ON(green), OFF(red), UNKNOW(black)
                                        PcSearch(NbrePcSearch, 4)=""     'username
                                end if
                        next
                end if
                AffichePageWeb "startpc.htm"
        end if

        if action="rechercherinv" then
                for i=1 to 500
                        Inversion(i)=true
                next
                for i=1 to NbrePcSearch
                        Inversion(PcSearch(i, 1))=false
                next
                NbrePcSearch=0
                for i=1 to NbrePc
                        if Inversion(i)=true then
                                NbrePcSearch=NbrePcSearch+1
                                PcSearch(NbrePcSearch, 1)=i 'index MacName
                                PcSearch(NbrePcSearch, 2)=true   'case à cocher=ON
                                PcSearch(NbrePcSearch, 3)=Black  'pc ON ou OFF
                                PcSearch(NbrePcSearch, 4)="" 'username
                        end if
                next
                AffichePageWeb "startpc.htm"
        end if

        if action="supprimer" then
                j=0
                for i=1 to NbrePcSearch
                        execute "IsChecked=IE.Document.SelectionForm.cac_" & i & ".Checked"
                        if not IsChecked then
                                j=j+1
                                if j<>i then
                                        PcSearch(j, 1)=PcSearch(i, 1) 'index MacName
                                        PcSearch(j, 2)=PcSearch(i, 2) 'case à cocher=ON
                                        PcSearch(j, 3)=PcSearch(i, 3) 'pc ON ou OFF
                                        PcSearch(j, 4)=PcSearch(i, 4) 'username
                                end if
                        end if
                next
                NbrePcSearch=j
                AffichePageWeb "startpc.htm"
        end if

        if action="inverser" then
                for i=1 to NbrePcSearch
                        execute "IsChecked=IE.Document.SelectionForm.cac_" & i & ".Checked"
                        if IsChecked then PcSearch(i, 2)=false else PcSearch(i, 2)=true
                next
                AffichePageWeb "startpc.htm"
        end if

        if action="actualiser" then
                for i=1 to NbrePcSearch
                        execute "IsChecked=IE.Document.SelectionForm.cac_" & i & ".Checked"
                        if IsChecked then PcSearch(i, 2)=true else PcSearch(i, 2)=false
                        PcSearch(i, 3)=Gray
                        PcSearch(i, 4)=""
                next
                AffichePageWeb "startpc.htm"
                IE.Document.Script.SetVal("off")
                StartTime = Timer
                for i=1 to NbrePcSearch
                        if PcSearch(i, 2)=true then
                                if PcIsOn(MacName(PcSearch(i, 1), 2)) then
                                        PcSearch(i, 3)=green
                                        PcSearch(i, 4)="[" & getusername(MacName(PcSearch(i, 1), 2)) & "]"
                                        if PcSearch(i, 4)="[]" then PcSearch(i, 4)="[NoUser]"
                                 else
                                        PcSearch(i, 3)=red
                                        PcSearch(i, 4)="[OffLine]"
                                 end if
                                 if GetActionPageWeb()<>"off" then
                                        ret=MsgBox("Arrêter le traitement?", vbQuestion + vbYesNo + vbSystemModal + 0,"Arrêt traitement")
                                        if ret=vbyes then exit for
                                 end if
                                 difftime=Timer-StartTime
                                 if difftime>2 then StartTime = Timer : AffichePageWeb "startpc.htm"
                        end if
                next
                AffichePageWeb "startpc.htm"
                RazEtatPc=true
        end if

        err.clear()
        IE.Document.Script.SetVal("off")
        if err.number<>0 then exit do
Loop

exitprog()

'------------------------------------------------------------
' Fonction de tri du tableau MacName(); renvois code erreur:
'       si 2 lignes du tableau sont strictement identiques -> TriTab|=1
'       si 2 lignes du tableau contiennent les mêmes adresses mac -> TriTab|=2

Function TriTab()
 TriTab=0 : ii=1
 while ii<NbrePc
        jj=ii+1
        while jj<=NbrePc
                'tri du tableau ordre croissant
                if MacName(jj, 2)<MacName(ii, 2) then 'permute les lignes
                        MacName(NbrePc+1, 1)=MacName(ii, 1) : MacName(NbrePc+1, 2)=MacName(ii, 2) : MacName(NbrePc+1, 4)=MacName(ii, 4)
                        MacName(ii, 1)=MacName(jj, 1) : MacName(ii, 2)=MacName(jj, 2) : MacName(ii, 4)=MacName(jj, 4)
                        MacName(jj, 1)=MacName(NbrePc+1, 1) : MacName(jj, 2)=MacName(NbrePc+1, 2) : MacName(jj, 4)=MacName(NbrePc+1, 4)
                end if

                'recherche et suppression des incohérences: mac en double
                if MacName(jj, 1)=MacName(ii, 1) then
                        'codage erreur
                        if MacName(jj, 2)=MacName(ii, 2) then TriTab=TriTab or 1 else TriTab=TriTab or 2
                        'suppression ligne
                        for kk=jj+1 to NbrePc
                                MacName(kk-1, 1)=MacName(kk, 1)
                                MacName(kk-1, 2)=MacName(kk, 2)
                                MacName(kk-1, 4)=MacName(kk, 4)
                        next
                        NbrePc=NbrePc-1
                else
                        jj=jj+1
                end if
        wend
        ii=ii+1
 wend
end function

'------------------------------------------------------------
' Fonction d'affichage de la page web [pageweb)
Function AffichePageWeb(pageweb)
On error resume next
 NbreColonnes=6

 err.clear()
 Set objPageWeb = objFSO.OpenTextFile(RepWork & "\" & pageweb, ForReading)
 if err.number<>0 then
        MsgBox "Erreur d'ouverture de fichier." & vbCrLf & "Veuillez vérifier que le fichier '" & RepWork & "\" & pageweb & "' est accessible.", vbCritical + vbOkOnly + vbSystemModal + 0,"Erreur ouverture fichiers"
        exitprog()
 end if

 IE.document.Open
 Do Until objPageWeb.AtEndOfStream
        line=trim(objPageWeb.ReadLine)
        if line<>"" then
                IE.document.Writeln(line)
                if line="<!--inserrer ici la liste des PC-->" then
                        'insertion du code html pour affichage sélection pc
                        NbreLigne=int(NbrePcSearch/NbreColonnes)
                        if NbreLigne*NbreColonnes<NbrePcSearch then NbreLigne=NbreLigne+1
                        for ii=1 to NbreLigne
                                ligne="<tr>"
                                IE.document.Writeln(ligne)
                                for jj=1 to NbreColonnes
                                        IndexTabSearch=(ii-1)*NbreColonnes+jj
                                        if IndexTabSearch>NbrePcSearch then exit for
                                        if PcSearch(IndexTabSearch, 2) then selected="checked" else selected=""
                                        if PcSearch(IndexTabSearch, 4)<>"" then strusername="<br>" & PcSearch(IndexTabSearch, 4) else strusername=""
                                        ligne="<td width='10%'><input type='checkbox' name='cac_" & IndexTabSearch & "' value='ONOFF' " & selected & "><font color='" & PcSearch(IndexTabSearch, 3) & "' size='2'>" & MacName(PcSearch(IndexTabSearch, 1), 2) & strusername & "</font></td>"
                                        IE.document.Writeln(ligne)
                                next
                                ligne="</tr>"
                                IE.document.Writeln(ligne)
                        next
                end if
         end if
 loop
 IE.document.Close
 objPageWeb.Close
 IE.Document.SelectionForm.textsearch.value=textsearch
end function

'------------------------------------------------------------
' Fonction d'arret du script
Function exitprog()
on error resume next
 IE.Quit
 Set IE = Nothing
 wscript.quit
end function

'------------------------------------------------------------
' Fonction ouverture IE
Function OpenIE()
        Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
        With IE
         .left=0
         .top=0
         .height=740
         .width=1024
         .menubar=0
         .toolbar=0
         .statusBar=0
         .navigate "About:Blank"
         .visible=1
        End With
' Attendre la fin du chargement de IE
        Do while IE.busy
        loop
end function

'------------------------------------------------------------
' fonction retournant la valeur du n ième champ(NumField) d'une variable chaine de caractaires(ligne)
function GetField(NumField, ligne, separateur)
 'verification et init variables
 GetField=""
 if separateur="" then separateur=";"
 if NumField<1 then exit function
 if trim(ligne)="" then exit function
 OutOfRange=len(ligne)+1

 'traitement
 ii=0 : IndexLigneFin=0
 do
        'init variables
        ii=ii+1
        IndexLigneDeb=IndexLigneFin
        IndexLigneFin=OutOfRange
        ' recherche IndexLigneFin
        for sep=1 to len(separateur) 'traite multi séparateur ex: separateur=":;/" équivalent à  separateur=":" OU separateur=";" OU separateur="/"
                IndexLigneFinTemp = Instr(IndexLigneDeb+1, ligne, mid(separateur, sep, 1))
                if IndexLigneFinTemp>0 and IndexLigneFinTemp<IndexLigneFin then IndexLigneFin=IndexLigneFinTemp
        next
        if IndexLigneFin=OutOfRange then exit do
 loop until ii=NumField
 if ii=NumField then
        if IndexLigneDeb=0 then IndexLigneDeb=1 else IndexLigneDeb=IndexLigneDeb+1
        IndexLigneFin=IndexLigneFin-1
        if IndexLigneFin>=IndexLigneDeb then GetField=mid(ligne, IndexLigneDeb, IndexLigneFin-IndexLigneDeb+1)
 end if
end function

'------------------------------------------------------------
' fonction retournant l'index de départ ou de fin(DepFin) du N ième champ(NumField) d'une variable chaine de caractaires(ligne)
' DepFin=0 -> recherche index départ sinon recherche index Fin
function GetIndexField(NumField, ligne, separateur, DepFin)
 'verification et init variables
 GetIndexField=-1
 if separateur="" then separateur=";"
 if NumField<1 then exit function
 if trim(ligne)="" then exit function
 OutOfRange=len(ligne)+1

 'traitement
 ii=0 : IndexLigneFin=0
 do
        'init variables
        ii=ii+1
        IndexLigneDeb=IndexLigneFin
        IndexLigneFin=OutOfRange

        ' recherche IndexLigneFin
        for sep=1 to len(separateur) 'traite multi séparateur ex: separateur=":;/" équivalent à  separateur=":" OU separateur=";" OU separateur="/"
                IndexLigneFinTemp = Instr(IndexLigneDeb+1, ligne, mid(separateur, sep, 1))
                if IndexLigneFinTemp>0 and IndexLigneFinTemp<IndexLigneFin then IndexLigneFin=IndexLigneFinTemp
        next
        if IndexLigneFin=OutOfRange then exit do
 loop until ii=NumField
 if ii=NumField then
        if IndexLigneDeb=0 then IndexLigneDeb=1 else IndexLigneDeb=IndexLigneDeb+1
        IndexLigneFin=IndexLigneFin-1
        if IndexLigneFin>=IndexLigneDeb then
                if StartEnd=0 then GetIndexField=IndexLigneDeb else GetIndexField=IndexLigneFin
        end if
 end if
end function
'------------------------------------------------------------
' retourne true si ping ok sinon retourne false
function PcIsOn(strpc)
 Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("select * from Win32_PingStatus where address = '" & strpc & "'")
 PcIsOn=false
 For Each objStatus in objPing
        If objStatus.Statuscode = 0 Then PcIsOn=true : exit function
 next
end function

'------------------------------------------------------------
' retourne true si la recherche strsearch composé de "|"(OR) et de "&"(AND) est trouvé dans strbase sinon retourne false
' ex: strsearch="pc1|pc2"; retourne true si la chaine "pc1" OU la chaine "pc2" est trouvé dans strbase
'     strsearch="pc1&pc2"; retourne true si la chaine "pc1" ET la chaine "pc2" sont trouvées dans strbase
'     strsearch="*"; retourne true
function IsFind(strbase, strsearch)
 if strsearch="*" then IsFind=true : exit function
 kk=1 : IsFind=false
 do
        str2search=trim(GetField(kk, strsearch, "|&")) 'récupération du kk ième champs
        if str2search="" then exit do
        operator=""
        if kk>1 then operator=mid(strsearch, GetIndexField(kk, strsearch, "|&", 0)-1, 1) 'récupération du kk ième opérateur
        if operator="" then 'donc dernier champs de strsearch
                if Instr(1, strbase, str2search)>0 then IsFind=true else IsFind=false
        end if
        if operator="|" and Instr(1, strbase, str2search)>0 then IsFind=true
        if operator="&" and Instr(1, strbase, str2search)=0 then IsFind=false
        kk=kk+1
 loop
end function

'------------------------------------------------------------
' retourne le username du compte connecté sur le pc OnThisPc
function getusername(OnThisPc)
 getusername=""
 Set objWMIService = GetObject("winmgmts:\\" & OnThisPc & "\root\CIMV2")
 Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
 For Each objItem In colItems
        getusername=trim(objItem.UserName)
 next
end function

'------------------------------------------------------------
' retourne l'adresse mac du pc OnThisPc
function GetMacAdress(OnThisPc)
on error resume next
 GetMacAdress=""
 Err.clear()
 set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & OnThisPc).ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE")
 If Err.Number<>0 Then exit function
 for each IPConfig in IPConfigSet
        mtemp=trim(IPConfig.MACAddress)
 Next
 for ii=1 to len(mtemp) 'retrait des ':'
        char=mid(mtemp, ii, 1)
        if char<>":" then GetMacAdress=GetMacAdress & char
 next
End function

'------------------------------------------------------------
' Sauvegarde du tableau MacName() dans le fichier [MacNameFile]
function SavMacName()
on error resume next

 SavMacName=false
 'ouverture fichier temporaire [MacNameFile].tmp
 err.clear()
 if objFSO.fileExists(MacNameFile & ".tmp") then objFSO.deleteFile(MacNameFile & ".tmp")
 Set objWriteFile = objFSO.OpenTextFile(MacNameFile & ".tmp", ForWriting, True)
 if err.number<>0 then exit function

 'ecriture dans fichier [MacNameFile].tmp
 for xx=1 to NbrePc
        if MacName(xx, 3)<>"" then lignetemp=MacName(xx, 3) & ";" else lignetemp=MacName(xx, 1) & ";"
        lignetemp=lignetemp & MacName(xx, 2) & ";"
        if MacName(xx, 4)<>"" then lignetemp=lignetemp & MacName(xx, 4)
        objWriteFile.WriteLine(lignetemp)
 next
 objWriteFile.close

 'cré 2 copies de sauvegarde: [MacNameFile].sav->[MacNameFile].sav.bak
 '                         et [MacNameFile]->[MacNameFile].sav
 'renome [MacNameFile].tmp->[MacNameFile]
 if err.number=0 then
        if objFSO.FileExists(MacNameFile & ".sav") then
                if objFSO.FileExists(MacNameFile & ".sav.bak") then objFSO.DeleteFile(MacNameFile & ".sav.bak")
                objFSO.MoveFile MacNameFile & ".sav" , MacNameFile & ".sav.bak"
        end if
        objFSO.MoveFile MacNameFile , MacNameFile & ".sav"

        err.clear()
        objFSO.MoveFile MacNameFile & ".tmp", MacNameFile
        if err.number=0 then SavMacName=true
 end if
end function

'------------------------------------------------------------
' retourne l'action demandé par l'utilisateur
function GetActionPageWeb()
on error resume next
 err.clear()
 GetActionPageWeb=IE.Document.Script.CheckVal()
 if err.number<>0 then 'teste si IE est fermé
        WScript.Sleep 30
        err.clear()
        IE.document.Open : IE.document.close
        if err.number<>0 then exitprog() else AffichePageWeb "startpc.htm"
 end if
end function

Conclusion :


A modifier selon vos besoins.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.