Bonjour à tous,
J'ai fait un petit script en Visual Basic Script afin de vérifier toute les 5 secondes la présence d'un dossier sur le réseau.
Selon le statut, cela modifie 2 clefs de la base de registre.
J'ai essayé de faire au mieux en fonction des tutoriaux glanés sur le www et j'ai finalisé un script qui - converti en exécutable - fait le job (j'ai l'impression).
Cependant, en regardant l'évolution de l'allocation de la mémoire vive pour ce petit exe, je me rend compte qu'il grimpe progressivement et continuellement, quelques kilo toutes les 5 secondes environs. C'est pas énorme, il part à 3700K et grimpe petit à petit après.
Vu qu'il est destiné à rester actif tout le temps, cela est surement problématique ?
Je soupçonne donc une fuite mémoire, mais je ne comprend pas d'où cela peut venir.
J'ai essayer de libérer les objets à la fin de chaque cycle de 5 sec mais le résultat est le même.
Avez vous des idées ?
Ci dessous le code :
Code:Dim Obj Dim fso Dim rep Set fso = CreateObject("Scripting.FileSystemObject") Set Obj = CreateObject("WScript.Shell") Clef_1 = "HKEY_LOCAL_MACHINE\SOFTWARE\TEST\Clef_1" Clef_2 = "HKEY_LOCAL_MACHINE\SOFTWARE\TEST\Clef_2" path_reseau="Y:\" path_1_reseau="Y:" path_2_reseau="\\Données" path_1_local="C:" path_2_local="\\Users\\Pierre\\Documents\\Données" CheckNas() Function CheckNas() ' Vérifier la présence du serveur reseau_exists = fso.FolderExists(path_reseau) Read_1 = Obj.RegRead(Clef_1) if (reseau_exists) and Read_1 = path_1_reseau then ' Si accéssible et configuré 'Obj.Popup "NAS accessible et déja configuré" & vbLf & "Fermeture automatique dans de 3 secondes", 3, "This is your Message Box", 0 + vbSystemModal + vbInformation Continue() elseif (reseau_exists) and Read_1 = path_1_local then ' Si accéssible et non configuré NasAccessible() elseif not (reseau_exists) and Read_1 = path_1_reseau then ' Si non accéssible et non configuré NasNonAccessible() elseif not (reseau_exists) and Read_1 = path_1_local then ' Si non accéssible et configuré 'Obj.Popup "NAS non accessible et déja configuré" & vbLf & "Fermeture automatique dans 3 secondes", 3, "This is your Message Box", 0 + vbSystemModal + vbInformation Continue() end if end Function Function Continue() ' Attendre 5 secondes Continuer de vérifier la présence du serveur WScript.Sleep 5000 CheckNas() end Function Function NasAccessible() ' Configurer pour travailler les projets en réseau rep = MsgBox("Le Serveur est accéssible" & vbLf & "Voulez vous basculer en Réseau ?", vbYesNoCancel + vbQuestion + vbSystemModal, "NAS accéssible") if rep = vbYes then Obj.RegWrite Clef_1, path_1_reseau, "REG_SZ" Obj.RegWrite Clef_2, path_2_reseau, "REG_SZ" ElseIf rep = vbNo Then ElseIf rep = vbCancel then Quit() end if Continue() end Function Function NasNonAccessible() ' Configurer pour travailler les projets en local rep = MsgBox("Le Serveur n'est pas accéssible" & vbLf & "Voulez vous basculer en Local ?", vbYesNoCancel + vbQuestion + vbSystemModal, "NAS non accéssible") if rep = vbYes then Obj.RegWrite Clef_1, path_1_local, "REG_SZ" Obj.RegWrite Clef_2, path_2_local, "REG_SZ" ElseIf rep = vbNo Then ElseIf rep = vbCancel then Quit() end if Continue() end Function Function Quit() ' Quitter le programme rep = Obj.Popup( "Attention !" & vbLf & vbLf & "La vérification de présence du serveur n'est plus éffective" & vbLf & "Fermeture automatique dans de 3 secondes", 5, "Procédure arrétée", vbOKCancel + vbSystemModal + vbExclamation ) if rep = vbYes then ElseIf rep = vbCancel then Continue() end if End Function Set Obj = Nothing ' Destruction des Objs Set fso = Nothing ' Destruction des Objs WScript.Quit ' Quiter le programme
-----