'-- 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