'-- ZazouMiniWebServer Manager '-- '-- Un utilitaire pour piloter ZazouMiniWebServer depuis une icône dans la systray '-- '-- Auteur : David Duret '-- Version : 0.2-2006-07-20 '-- Licence : GPL Option Explicit Const AppName = "ZazouMiniWebServerManager" Const AppFullName = "ZazouMiniWebServer Manager" Const AppVersion = "0.1" Dim WshShell, WshSysEnv Set WshShell = WScript.CreateObject("WScript.Shell") Dim filename filename = WshShell.ExpandEnvironmentStrings("%Tmp%") & "\" & AppName & ".xml" Dim args, cmd Set args = WScript.Arguments cmd = "" if ( args.length > 0 ) then cmd = args(0) Dim menu, item, subitem Set menu = new TrayMenuXML if ( cmd = "" ) then '-- Détermination du statut d'excécution du serveur Dim objWMIService, colProcess, objProcess, bProcess bProcess = "false" Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = ""ZazouMiniWebServer.exe""" ) For Each objProcess in colProcess bProcess = "true" Next '-- Création du fichier XML menu.CreateXML filename, AppFullName & " " & AppVersion, AppName & ".exe,1" Set item = menu.AppendItem("Démarrer", "ZazouMiniWebServerManager.vbs") item.SetAttribute "id", "IDSTART" item.SetAttribute "params", "start" item.SetAttribute "host", "WScript.exe" if ( bProcess = "true" ) then item.SetAttribute "checked", "true" item.SetAttribute "enabled", "false" end if Set item = menu.AppendItem("Arrêter", "ZazouMiniWebServerManager.vbs") item.SetAttribute "id", "IDSTOP" item.SetAttribute "params", "stop" item.SetAttribute "host", "WScript.exe" item.SetAttribute "enabled", bProcess menu.AppendSeparator menu.AppendItem "Quitter", "cmdQuit" if ( bProcess = "true" ) then menu.SetTitle "ZazouMiniWebServer - démarré..." menu.SetIcon AppName & ".exe" else menu.SetTitle "ZazouMiniWebServer - arrêté" menu.SetIcon AppName & ".exe,1" end if else '-- Chargement du fichier XML menu.LoadXML filename '-- Exécution de la commande demandée Select Case cmd '-- Démarrage du serveur Case "start" WshShell.Run "ZazouMiniWebServer.exe -stop", 2 With menu.GetElementById("IDSTART") .SetAttribute "checked", "true" .SetAttribute "enabled", "false" End With menu.GetElementById("IDSTOP").SetAttribute "enabled", "true" menu.SetTitle "ZazouMiniWebServer - démarré..." menu.SetIcon AppName & ".exe" '-- Arrêt du serveur Case "stop" WshShell.Run "ZazouMiniWebServer.exe -shutdown", 2 With menu.GetElementById("IDSTART") .SetAttribute "checked", "false" .SetAttribute "enabled", "true" End With menu.GetElementById("IDSTOP").SetAttribute "enabled", "false" menu.SetTitle "ZazouMiniWebServer - arrêté" menu.SetIcon AppName & ".exe,1" End Select end if '-- Sauvegarde du fichier XML menu.SaveXML if ( cmd = "" ) then WshShell.Run "ZazouMiniWebServerManager.exe -f """ & filename & """" '=============================================================================== ' Classe de manipulation du ficher XML '=============================================================================== Class TrayMenuXML Private filename Private xmlDoc Private menu Function CreateXML ( strfilename, title, icon ) filename = strfilename Set xmlDoc = CreateObject("Microsoft.XMLDOM") Dim p Set p = xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""iso-8859-1""") 'xmlDoc.insertBefore p, xmlDoc.childNodes(0) xmlDoc.AppendChild p Set menu = xmlDoc.CreateElement("menu") menu.SetAttribute "title", title menu.SetAttribute "icon", icon menu.SetAttribute "autoreload", "true" xmlDoc.appendChild menu End Function Function LoadXML( strfilename ) filename = strfilename Set xmlDoc = CreateObject("Microsoft.XMLDOM") xmlDoc.async = "false" xmlDoc.load(filename) Dim result Set result = xmlDoc.selectNodes("//menu") Set menu = result.item(0) End Function Function SaveXML() xmlDoc.save(filename) End Function Function SetTitle( title ) menu.SetAttribute "title", title End Function Function SetIcon( icon ) menu.SetAttribute "icon", icon End Function Function AppendItem( caption, cmd ) Dim item Set item = xmlDoc.CreateElement("item") item.SetAttribute "caption", caption item.SetAttribute "cmd", cmd menu.appendChild item Set AppendItem = item End Function Function AppendSeparator() Dim item Set item = xmlDoc.CreateElement("item") item.SetAttribute "caption", "-" menu.appendChild item End Function Function GetElementById( id ) Dim result, item Set result = xmlDoc.selectNodes("//item[@id=""" & id & """]") Set item = result.item(0) Set GetElementById = item End Function End Class