Vous n'êtes pas connecté.
Hello,
Suite de ce sujet
Faisant suite au topics, ci-dessous seront posté les derniers codes, les derniers tests etc. régis de la manière suivante :
1. les sources seront toujours dans le TOUT premier post (édité en permanance),
2. les EDIT seront marqué du jour, du mois, de l'année et de l'heure de l'édit,
3. les tests seront toujours postés dans des posts différents (l'un à la suite de l'autre),
4. les bugs et problèmes seront toujours postés dans le TOUT premier post (règle similaire aux sources),
5. les suggestions seront postés identiquement qu'au point 3.
Voici donc les sources :
1. ZLAM_V0XYYALPHA.AU3 :
#cs
Nom du script : non_determine => ZLAM
Version du script : v0.3.247.alpha
Auteur : Pilgrim, Fabrice, Groumphy
Licence : GNU GPL v2
(Consultation : voir interface du script ou une recherche sur Google :oO )
Rôle du script : lancer ZazouMiniWebServer,
fermer ZazouMiniWebServer,
démarrer MySQL,
arrêter MySQL,
vérifier la présence de PHP
vérifier l'état de LocalHost, (à combiner avec le lancement de ZazouMiniWebServer)
vérifier la non disponibilité de LocalHost, (à combienr avec l'arret de ZazouMiniWebServer)
Historique : v0.3.2xx.alpha simplification du "scheme numbering"
extériorisation des fonctions (Good idea of Pilgrim, good job of Fabrice :o} )
création de l'interface Licence
extériorisation des fichiers licences
structure conditionnelle pour la GUI Licence (test)
événement de la GUI Licence
insertion de ZazouMiniWebServer.exe dans le répertoire
test de lancement ZazouMiniWebServer via contrôle (test OK)
test de lancement ZazouMiniWebServer et arret (test OK)
test de compilation (test OK)
implémentation d'un système d'erreur dans les structures conditionnelles
modification de l'initialisation des contrôles (Démarrage ZMWS)
correction des infobulles
implémentation des actions de bouton et status des serveurs
conception du délai d'attente
implémentation des actions de bouton et status MySQL
implémentation de la licence
implémentation de la fonction PHP (vérifie la présence du dossier PHP / PHP5)
modification de la fonction PHP (indique la version pour PHP5)
mise en place de l'icone ZMWS (@Scriptdir & "\_web.zmwsc\css\images\icones")
correction de la GUI principale
modification de la structure des fichiers licences (nom des variables !)
v0.2.2xx.alpha implémentation de zmws_get_ips
implémentation de zmws_get_version
modification GUI A Propos
correction de la fonction Menu > Quitter
intégration des fonctions DLL
ZMWS_Start
ZMWS_Stop
ZMWS_Restart
mise en commentaire des GUI ( only for Fabrice :oO Gniark who
don't know this basic functions ! Not Good Fab ;-} )
correction des ToolTips
"Cleaning code"
intégration des licences
v0.1.2xx.alpha construction GUI principale
fonction primaire GUI principale
fonction primaire ZMWS
fonction primaire MySQL
construction de région de compilation
intégration des fonctions extérieures (Cf. script Fabrice)
correction des erreurs de variables
correction des erreurs d'intégration
construction de la GUI A Propos
intégration de la GUI A Propos
correction des événements d'interface
Duplication des événements du menu
v0.1.200.alpha version initiale
Bugs à corriger : v0.3.2xx.alpha Fn. _Licence -> affiche mauvais encodage dans l'INPUT
Bugs fixé : v0.3.2xx.alpha Fermeture de la GUI A Propos ne redonne pas le focus à ZLAM
v0.2.2xx.alpha vérification de la structure de mise en forme des GUI et Ctrl via
GUICtrlSetFont et GUISetFont
Cf. http://www.autoitscript.com/forum/index.php
?s=&showtopic=21899&view=findpost&p=228919 --> En attente
v0.2.2xx.alpha problème d'impression via _FilePrint
v0.1.2xx.alpha problème de lancement Démarrage ZMWS (ssMn_DemarrageZMWS) -> Variable de capture non initalisée
v0.1.2xx.alpha $u_LocalIp = zmws_get_ips retourne rien !
Information : Début de l'interface complète de "la télécommande ZMWS". Lorsque le bouton "Minimaliser" ou le menu
"Minimaliser" sera actif, il y aura minimalisation dans le SysTray et l'exécution du clic de contrôle
avec le bouton droit de la souris sera opérationnel. A défaut, il ne se passe rien !
To do (version alpha) :
- sélection de la DLL ou de l'EXE
x v0.3 x extériorisation des différentes fonctions (thanks to Fabrice & Pilgrim)
- structure conditionnelle de démarrage du serveur et activation des boutons MySQL
- extériorisation linguistique (fichier INI ? fichier Lang ?)
- mettre un Sleep pour l'arret du serveur
- essayer de trouver le paramètre pour masquer la console lorsque l'on lance l'exécutable
- lien vers licence uniquement actif si fichier présent ! A défaut, redirigé vers le web... (Thanks, to Fabrice)
To do (version beta 1) :
- mettre les adresses Web, les applications, les noms d'applications en variables (facilité de maintenance)
- vérifier la présence de PHP (répertoire + exécutable) [ Process ?? ]
- permettre le redémarrage ( ZMWS_Stop et ZMWS_Start )
- extériorisation des paramètres en INI
- extériorisation de la gestion de la langue
To do (version beta 2)
- intégration du SysTrayMenu ( Cf. travail de Pilgrim et Fabrice )
- correction du code ( mode standard pour Fn. autre que Au3 ) [ Correction Var. + Fn ]
#ce
#Region Compiler directives section ; Début des régions de compilation
#Compiler_Prompt=n ; Affichage des paramètres de compilation
#Compiler_Icon=icone.ico ; Icône pour l'EXE
#Compiler_Compression=2 ; Paramètres de compression (0 -> 4) 0 = léger, 2 = normal, 4 = maximum
#Compiler_Allow_Decompile=y ; Autorisation de décompilation
#Compiler_PassPhrase= ; Mot de passe de décompilation
#Compiler_UseUpx=y ; Utiliser un programme externe de compression
; ( v3.1.x.y > 3.1.1.110++ ), Yes = défaut
#Compiler_Res_Comment=Contrôleur de ZazouMiniWebServer ! ; Commentaire de l'exécutable
#Compiler_Res_Description=Télécommande ZazouMiniWebServer ; Description de l'exécutable
#Compiler_Res_Fileversion=0.3.247.200609041737 ;version du fichier !!
; Attention respecter impérativement le schèma de numérotation
#Compiler_Res_LegalCopyright=ZMWS (GNU GPL v2) ; Licence de l'exécutable
#Compiler_Res_Field=Auteurs|Groumphy ; Auteurs de ZLAM
#Compiler_Res_Field=E-mail|zmws_dev_team dot gmail.com ; E-mail de contact, à adapter avec les autres mails
; Voir pour créer une adresse mail type zmws_dev_team@gmail.com
; et la mettre en commun !
#Compiler_Res_Field=Version AutoIt|%AutoItVer% ; Version AutoIt utilisée
#Compiler_Res_Field=Date de compilation|%date% %time% ; Date de compilation
#compiler_res_field=Type de distribution|version Alpha 1 (ne pas distribuer) ; Type de distribution
#compiler_res_field=Participation|Fabrice & Pilgrim, merci à vous deux ! ; Petit champs pour mes deux scripteurs préférés !
#Compiler_Run_AU3Check=y ; Exécuter une vérification de compilation, Yes = défaut
#Compiler_AU3Check_Stop_OnWarning=N ; Continuer uniquement s'il y a des avertissements, Yes = défaut
;#Compiler_Run_Before= ; Exécuter avant compilation -> Voir si on en a besoin
;#Compiler_Run_After= ; Exécuter après compilation -> Voir si on en a besoin
#EndRegion ; Début des régions de compilation
; Nom de la fonction :
; Rôle : Affichage d'un interface pour les différentes options de ZazouMiniWebServer
; Dépendance : GUIConstants.au3
; Auteur : Groumphy
; Modification :
; Version : voir script général
; Information importante :
; Début des déclarations des variables non spécifiées en constantes
Dim $u_LocalIp, $u_StatusZmws, $u_StatusMysql, $u_PortHTTP, $u_PortHTTPS, $u_StatusPHP, $u_StatusPortHTTP
Dim $u_StatusPortHTTPS, $s_ZMWSVersion, $s_FlagLicence, $s_GPLSurWeb, $s_OpenSSLSurWeb
; Fin des déclaration des variables non spécifiées en constates
; Début des variables spécifiées en constantes
Global Const $s_ZMWSExe = "ZazouMiniWebServer.exe" ; Exe principal (ZMWS Core)
Global Const $s_ZMWSDll = "ZazouMiniWebServer.dll" ; DLL principale de ZMWS
Global Const $s_ZMWSSite = "http://www.zmws.com" ; Site de ZMWS
Global Const $s_ZMWSForum = $s_ZMWSSite & "/forum" ; Forum de ZMWS
Global Const $s_ZMWSDon = "http://www.zmws.com/donate" ; Faire un don pour ZMWS
Global Const $s_LicenceZMWS = "" ; !!! Concernant les licences, ne serait-il pas mieux
; de les inclures en .TXT
Global Const $s_LicencePHP = "" ; Dans le package de téléchargement et de faire un
; Input avec ProgressBar
Global Const $s_LicenceMySQL = "" ; lorsque un lien est sélectionné et lit donc le fichier
; TXT dans l'Input ??
Global Const $s_LicenceOpenSSL = "" ; A suivre, cela éviterais donc à chaque fois une
; connexion sur le net, un lien vers la licence sur le net
; peut être inclus par la suite.
Global Const $s_VersionZLAM = FileGetVersion(@ScriptFullPath) ; Version de ZLAM !
Global Const $s_DllOpen = DllOpen($s_ZMWSDll) ; Ouverture de la DLL principale
Global Const $s_FichierLicenceGPL = "LICENSE" ; Fichier licence GPL v2
Global Const $s_FichierLicenceOpenSSL = "LICENSE_openssl" ; Fichier licence OpenSSL
; Fin des variables spécifiées en constantes
; Initialisation des variables non spécifiées en constantes, à mettre à jour avec GUICtrlSetData(Controle,Data)
$u_StatusZmws = "inconnu" ; A mettre à jour avec les processus et détection de LocalHost
; => Quels sont les processus ?
; + Activation du bouton MySQL
; + Déclanchement sur bouton -> Vérification
$u_StatusMysql = "inconnu" ; A mettre à jour avec les processus
$u_PortHTTP = "0000" ; Port HTTP
$u_PortHTTPS = "0000" ; Port HTTPS
$u_StatusPHP = "inconnu" ; A mettre à jour avec la détection du dossier PHP ou PHP et
$u_StatusPortHTTP = "inconnu" ; Status du port HTTP
$u_StatusPortHTTPS = "inconnu" ; Status du port HTTPS
$s_ZMWSVersion = FileGetVersion($s_ZMWSExe) ; Version de ZMWS via EXE !! Voir pour le schème numbering
$u_LocalIp = @IPAddress1 ; IP via ZMWS
; Ne pas passer en constante car si il y a redémarrage de ZMWS,
; il peut y avoir changement IP
; -> Refresh à prévoir ( GUICtrlSetData )
$s_OpenSSLSurWeb = "http://www.openssl.org/source/license.html" ; Fichier licence OpenSSL sur le Web
; Voir pour l'intégrer dans le domaine ZMWS ??
; A suivre...
$s_GPLSurWeb = "http://www.gnu.org/copyleft/gpl.html" ; Fichier licence GPL v2
; Voir pour l'intégrer dans le domaine ZMWS ??
; A suivre...
; Début des inclusions et constantes extérieures
#include <GUIConstants.au3> ; Inclusions des constantes pour les GUI
#include "zlam_include_v02xxAlpha.au3" ; Inclusions des fonctions
#Region ### START Koda GUI section ### Form=gui_zlam.kxf ; Début de la création d'interface utilisateur, spécification Koda
GUISetIcon(@ScriptDir & "\_web.zmwsc\css\images\icones\favicon.ico")
$gui_zlam = GUICreate(" ZLAM", 315, 350, -1, -1) ; Création de la GUI
GUISetCursor (2) ; Définition du curseur de la GUI
GUISetFont(9, 400, 0, "Arial") ; Définition de la police de la GUI
$gp_zmwsStatus = GUICtrlCreateGroup(" ZazouMiniWebServer Status ", 10, 6, 290, 145) ; Création du groupe
$lbl_StatusZMWS = GUICtrlCreateLabel("Status ZMWS : ", 20, 26, 86, 19) ; Etiquette (label)
$lbl_StatusMysql = GUICtrlCreateLabel("Status MYSQL : ", 20, 51, 91, 19) ; Etiquette (label)
$lbl_LocalIP = GUICtrlCreateLabel("Local IP : ", 20, 76, 57, 19) ; Etiquette (label)
$lbl_PortUtiliseHTTP = GUICtrlCreateLabel("Port utilisé HTTP : ", 20, 101, 105, 19) ; Etiquette (label)
$lbl_StatusPortHTTP = GUICtrlCreateLabel("Status :", 180, 101, 45, 19) ; Etiquette (label)
$lbl_PortUtiliseHTTPS = GUICtrlCreateLabel("Port utilisé HTTPS : ", 20, 126, 113, 19) ; Etiquette (label)
$lbl_StatusPortHTTPS = GUICtrlCreateLabel("Status :", 180, 126, 45, 19) ; Etiquette (label)
$lbl_StatusPHP = GUICtrlCreateLabel("PHP :", 180, 76, 35, 19) ; Etiquette (label)
$lbl_StatusZMWS2 = GUICtrlCreateLabel($u_StatusZmws, 115, 25, 80, 19) ; Etiquette (label) contenant le status de ZMWS (variable)
GUICtrlSetColor($lbl_StatusZMWS2, 0xFF0000) ; Mise en forme du label => Couleur rouge (RGB)
; Initialement rouge => Adapter dès que Status OK
; sur le vert ! (GUICtrlSetColor) sur événement
$lbl_StatusMysql2 = GUICtrlCreateLabel($u_StatusMysql, 115, 50, 80, 19) ; Etiquette (label) contenant le status de MySQL (variable)
GUICtrlSetColor($lbl_StatusMysql2, 0xFF0000) ; Mise en forme du label => Couleur rouge (RGB)
; Initialement rouge => Adapter dès que Status OK
; sur le vert ! (GUICtrlSetColor) sur événement
$lbl_LocalIP2 = GUICtrlCreateLabel($u_LocalIp, 80, 75, 75, 19) ; Etiquette (label) contenant l'adresse IP (variable)
If $u_LocalIp = '' Or $u_LocalIp = '0.0.0.0' Then
GUICtrlSetColor($lbl_LocalIP2, 0xFF0000) ; Mise en forme du label
; => Couleur rouge (RGB) car pas d'IP
Else
GUICtrlSetColor($lbl_LocalIP2, 0x008000) ; Mise en forme verte (IP OK)
EndIf
$lbl_PortUtiliseHTTP2 = GUICtrlCreateLabel($u_PortHTTP, 135, 100, 32, 19) ; Etiquette (label) contenant le port HTTP (variable)
$lbl_PortUtiliseHTTPS2 = GUICtrlCreateLabel($u_PortHTTPS, 135, 125, 32, 19) ; Etiquette (label) contenant le port HTTPS (variable)
$lbl_StatusPHP2 = GUICtrlCreateLabel($u_StatusPHP, 240, 76, 49, 19) ; Etiquette (label) contenant le status PHP (variable)
GUICtrlSetColor($lbl_StatusPHP2, 0xFF0000) ; Mise en forme du label => Couleur rouge (RGB)
; Initialement rouge => Adapter dès que Status OK
; sur le vert ! (GUICtrlSetColor) sur événement
$lbl_StatusPortHTTP2 = GUICtrlCreateLabel($u_StatusPortHTTP, 240, 100, 49, 19) ; Etiquettes (label) contenant le status du port HTTP (variable)
GUICtrlSetColor($lbl_StatusPortHTTP2, 0xFF0000) ; Mise en forme du label => Couleur rouge (RGB)
; Initialement rouge => Adapter dès que Status OK
; sur le vert ! (GUICtrlSetColor) sur événement
$lbl_StatusPortHTTPS2 = GUICtrlCreateLabel($u_StatusPortHTTPS, 241, 125, 49, 19); Etiquettes (label) contenant le status du port HTTPS (variable)
GUICtrlSetColor($lbl_StatusPortHTTPS2, 0xFF0000) ; Mise en forme du label => Couleur rouge (RGB)
; Initialement rouge => Adapter dès que Status OK
; sur le vert ! (GUICtrlSetColor) sur événement
GUICtrlCreateGroup("", -99, -99, 1, 1) ; Fin du groupe ZMWS Status
$gp_zmwsControle = GUICtrlCreateGroup(" ZazouMiniWebServer Contrôle ", 10, 165, 290, 113) ; Groupe (contrôle)
$btn_DemarrerZmws = GUICtrlCreateButton("Démarrer &ZMWS", 30, 195, 120, 30, 0) ; Bouton démarrer ZMWS
GUICtrlSetTip($btn_DemarrerZmws, "Démarrer le serveur ZazouMiniWebServer") ; Définition de l'infobulle du bouton
GUICtrlSetCursor ($btn_DemarrerZmws, 0) ; Définition du curseur du bouton
$btn_DemarrerMysql = GUICtrlCreateButton("Démarrer M&YSQL", 30, 235, 120, 30, 0) ; Bouton démarrer MySQL
GUICtrlSetState($btn_DemarrerMysql, $GUI_DISABLE) ; Désactivation du bouton
; ne peut être activé que si on pousse
; sur ZMWS Start (to do !)
GUICtrlSetTip($btn_DemarrerMysql, "Démarrer la base de données MySQL") ; Infobulle du bouton
GUICtrlSetCursor ($btn_DemarrerMysql, 0) ; Curseur du bouton
$btn_ArreterZmws = GUICtrlCreateButton("Arrêter ZM&WS", 160, 195, 120, 30, 0) ; Bouton arrêter ZMWS
GUICtrlSetState($btn_ArreterZmws, $GUI_DISABLE) ; Désactivation du bouton
GUICtrlSetTip($btn_ArreterZmws, "Arrêter le serveur ZazouMiniWebServer") ; Infobulle du bouton
GUICtrlSetCursor ($btn_ArreterZmws, 0) ; Curseur du bouton
$btn_ArreterMysql = GUICtrlCreateButton("Arrêter MYS&QL", 160, 235, 120, 30, 0) ; Bouton Arret de MySQL
GUICtrlSetState($btn_ArreterMysql, $GUI_DISABLE) ; Désactivation du bouton
; ne sera activé que si MySQL est démarré
GUICtrlSetTip($btn_ArreterMysql, "Arrêter la base de données MySQL") ; Infobulle du bouton
GUICtrlSetCursor ($btn_ArreterMysql, 0) ; Curseur du bouton
GUICtrlCreateGroup("", -99, -99, 1, 1) ; Fin du groupe pour les contrôles
$btn_Minimaliser = GUICtrlCreateButton("&Minimaliser", 160, 290, 120, 30, 0) ; Création du bouton Minimaliser
; l'action masquera la GUI et le
; Systray prendra le contrôle
GUICtrlSetCursor ($btn_Minimaliser, 0) ; Curseur du bouton
GUICtrlSetState($btn_Minimaliser, $GUI_DISABLE)
$btn_Apropos = GUICtrlCreateButton("A &propos", 30, 290, 120, 30, 0) ; Bouton A Propos
; Fais apparaitre la GUI A Propos
GUICtrlSetCursor ($btn_Apropos, 4) ; Curseur du bouton
$mn_Fichier = GUICtrlCreateMenu("&Fichier") ; Création du menu Fichier
$ssMn_Minimaliser = GUICtrlCreateMenuItem("&Minimaliser", $mn_Fichier) ; Création du menu Fichier > Minimaliser
GUICtrlSetState($ssMn_Minimaliser, $GUI_DISABLE)
$ssMn_Quitter = GUICtrlCreateMenuItem("&Quitter", $mn_Fichier) ; Création du menu Fichier > Quitter
$mn_Controle = GUICtrlCreateMenu("Con&trôle") ; Création du menu Contrôles
$ssMn_DemarrerZMWS = GUICtrlCreateMenuItem("Dé&marrer ZMWS", $mn_Controle) ; Création du menu Controles > Démarrer ZMWS
$ssMn_ArreterZMWS = GUICtrlCreateMenuItem("A&rrêter ZMWS", $mn_Controle) ; Création du menu Contrôles > Arrêter ZMWS
GUICtrlSetState($ssMn_ArreterZMWS, $GUI_DISABLE) ; Désactivation du menu, actif uniquement
; si ZMWS est démarré !
$ssMn_DemarrerMysql = GUICtrlCreateMenuItem("Démarr&er MySQL", $mn_Controle) ; Création du menu Contrôles > Démarrer MySQL
GUICtrlSetState($ssMn_DemarrerMysql, $GUI_DISABLE) ; Désactivation du menu, ne peut être activé
; que si ZMWS est actif
$ssMn_ArreterMysql = GUICtrlCreateMenuItem("Arrêter My&SQL", $mn_Controle) ; Création du menu Contrôles > Arrêter MySQL
GUICtrlSetState($ssMn_ArreterMysql, $GUI_DISABLE) ; Désactivation du menu, ne peut être activé
; que si MySQL et ZMWS sont démarré
$mn_Apropos = GUICtrlCreateMenu("&A Propos") ; Création du menu A Propos
$ssMn_Apropos = GUICtrlCreateMenuItem("A &Propos", $mn_Apropos) ; Création du menu A Propos > A Propos
$ssMn_ZMWSCom = GUICtrlCreateMenuItem("Visiter ZMWS.com", $mn_Apropos) ; Création du menu A Propos > Visiter ZMWS.com
$ssMn_FaireDon = GUICtrlCreateMenuItem("Faire un don", $mn_Apropos) ; Création du menu A Propos > Faire un don
$ssMn_ForumZMWS = GUICtrlCreateMenuItem("Forum ZMWS", $mn_Apropos) ; Création du menu A Propos > Forum ZMWS
#EndRegion ### END Koda GUI section ### ; Fin de la zone Koda
#Region ### START Koda GUI section ### Form=gui_aproposzlam.kxf ; Début de la zone Koda
$gui_APropos = GUICreate("ZLAM : à propos", 333, 240, 358, 117, BitOr($WS_CAPTION, $WS_SYSMENU), -1, $gui_zlam) ; Création de la GUI
; A Propos, contenue
; dans la principale
GUISetCursor (2) ; Définition du curseur
GUISetFont(9, 400, 0, "Arial") ; Définition de la police
$gp_APropos = GUICtrlCreateGroup(" A propos de ZLAM & ZMWS : ", 10, 10, 313, 185) ; Création du groupe principal
$lbl_AuteurZMWS = GUICtrlCreateLabel("Auteur de ZMWS : ", 20, 30, 165, 17) ; Etiquette (label)
$lbl_AuteurZLAM = GUICtrlCreateLabel("Conception de ZLAM : ", 20, 50, 120, 17) ; Etiquette (label)
$gp_EnLigne = GUICtrlCreateGroup(" En ligne : ", 205, 100, 105, 90) ; Etiquette (label)
$lbl_VisiterForum = GUICtrlCreateLabel("Visiter le forum", 215, 120, 70, 17) ; Etiquette (label)
GUICtrlSetFont($lbl_VisiterForum, 8, 400, 4, "MS Sans Serif") ; Définition de la police
GUICtrlSetColor($lbl_VisiterForum, 0x0000FF) ; Défintion de la couleur
GUICtrlSetTip($lbl_VisiterForum, "Visiter le forum ZazouMiniWebServer") ; Définition de l'infobulle
GUICtrlSetCursor ($lbl_VisiterForum, 0) ; Curseur du label
; ==> Sert à imiter une URL
$lbl_VisiterSite = GUICtrlCreateLabel("Visiter le site", 215, 140, 70, 17) ; Etiquette (label)
GUICtrlSetFont($lbl_VisiterSite, 8, 400, 4, "MS Sans Serif") ; Mise en forme identique que le label
GUICtrlSetColor($lbl_VisiterSite, 0x0000FF) ; précédent --> Sert à imiter une URL
GUICtrlSetTip($lbl_VisiterSite, "Visiter le site ZMWS.COM")
GUICtrlSetCursor ($lbl_VisiterSite, 0)
$lbl_FaireDon = GUICtrlCreateLabel("Faire un don", 215, 160, 70, 17)
GUICtrlSetFont($lbl_FaireDon, 8, 400, 4, "MS Sans Serif") ; Mise en forme identique que le label
GUICtrlSetColor($lbl_FaireDon, 0x0000FF) ; précédent --> Sert à imiter une URL
GUICtrlSetTip($lbl_FaireDon, "Faire un don à l'auteur de ZazouMiniWebServer")
GUICtrlSetCursor ($lbl_FaireDon, 0)
GUICtrlCreateGroup("", -99, -99, 1, 1) ; Fin du groupe 'en ligne'
$lbl_VersionZMWS = GUICtrlCreateLabel("Version de ZMWS : ", 20, 70, 169, 17) ; Etiquette (label)
$lbl_VersionZMWS2 = GUICtrlCreateLabel($s_ZMWSVersion, 180, 70, 100, 17) ; Etiquette (label)
$lbl_Licence = GUICtrlCreateLabel("Licence : ", 20, 88, 51, 17) ; Etiquette (label)
$lbl_LicenceZMWSViews = GUICtrlCreateLabel("Licence ZMWS", 45, 108, 148, 17) ; Etiquette (label)
GUICtrlSetFont($lbl_LicenceZMWSViews, 8, 400, 4, "MS Sans Serif") ; Mise en forme identique que le label
GUICtrlSetColor($lbl_LicenceZMWSViews, 0x0000FF) ; précédent --> Sert à imiter une URL
GUICtrlSetTip($lbl_LicenceZMWSViews, "Voir la licence de développement de ZazouMiniWebServer (GPL)")
GUICtrlSetCursor ($lbl_LicenceZMWSViews, 0)
$lbl_LicencePHP = GUICtrlCreateLabel("Licence PHP", 45, 128, 67, 17)
GUICtrlSetFont($lbl_LicencePHP, 8, 400, 4, "MS Sans Serif") ; Mise en forme identique que le label
GUICtrlSetColor($lbl_LicencePHP, 0x0000FF) ; précédent --> Sert à imiter une URL
GUICtrlSetTip($lbl_LicencePHP, "Voir la licence de développement de PHP (GPL)")
GUICtrlSetCursor ($lbl_LicencePHP, 0)
$lbl_licenceMysql = GUICtrlCreateLabel("Licence MySQL", 45, 150, 80, 17)
GUICtrlSetFont($lbl_licenceMysql, 8, 400, 4, "MS Sans Serif") ; Mise en forme identique que le label
GUICtrlSetColor($lbl_licenceMysql, 0x0000FF) ; précédent --> Sert à imiter une URL
GUICtrlSetTip($lbl_licenceMysql, "Voir la licence de développement de MySQL (GPL)")
GUICtrlSetCursor ($lbl_licenceMysql, 0)
$lbl_licenceOpenssl = GUICtrlCreateLabel("Licence OpenSSL", 45, 170, 91, 17)
GUICtrlSetFont($lbl_licenceOpenssl, 8, 400, 4, "MS Sans Serif") ; Mise en forme identique que le label
GUICtrlSetColor($lbl_licenceOpenssl, 0x0000FF) ; précédent --> Sert à imiter une URL
GUICtrlSetTip($lbl_licenceOpenssl, "Voir la licence de développement de OpenSSL (GPL)")
GUICtrlSetCursor ($lbl_licenceOpenssl, 0)
$Label1 = GUICtrlCreateLabel("Xavier Garreau", 180, 30, 100, 17) ; Etiquette (label)
GUICtrlCreateGroup("", -99, -99, 1, 1) ; Fin du groupe principal
$btn_GUIAboutFermer = GUICtrlCreateButton("&Fermer", 220, 200, 100, 30, 0) ; Bouton Fermer
GUICtrlSetCursor ($btn_GUIAboutFermer, 0) ; Définition du curseur
$lbl_VersionZLAM = GUICtrlCreateLabel("Version ZLAM : ", 10, 200, 85, 17) ; Etiquette (label)
GUICtrlSetColor($lbl_VersionZLAM, 0x808080) ; Définition de la couleur
$lbl_VersionZLAMNum = GUICtrlCreateLabel($s_VersionZLAM, 100, 200, 105, 17) ; Définition de la version (Etiquette)
; avec la variable de la version
GUICtrlSetColor($lbl_VersionZLAMNum , 0x808080) ; Définition de la couleur
#EndRegion ### END Koda GUI section ### ; Fin de la zone Koda
#Region ### START Koda GUI section ### Form=gui_licence.kxf ; Début de la région Koda
$gui_Licence = GUICreate(" Licence des composants de ZMWS", 393, 444, 321, 126, BitOr($WS_CAPTION, $WS_SYSMENU), -1, $gui_zlam) ; Création de la GUI Licence
GUISetFont(9, 400, 0, "Arial") ; Définition de la police
GUISetCursor (2) ; Définition du curseur
$gp_Licence = GUICtrlCreateGroup(" Licence du composant : ", 10, 10, 370, 385) ; Groupe pour la licence
; _InsertTxtFileToLabel($iFilename, $iLeft, $iTop, $iHeight, $iWidth) ; Génération dynamique du Label
; Préétablir la variable du fichier licence ; avec la licence sélectionnée par variable
;_InsertTxtFileToLabel($s_FlagLicence, 10, 10, 365, 350)
Dim $s_LicenceLue
$s_LicenceDansGUI = GUICtrlCreateInput($s_LicenceLue, 20, 30, 350, 355, $ES_AUTOVSCROLL, -1)
GUICtrlCreateGroup("", -99, -99, 1, 1) ; Fin du Groupe Licence
$btn_FermerLicence = GUICtrlCreateButton("&Fermer", 265, 405, 113, 30, 0) ; Bouton Fermer la fenêtre licence
$lbl_LireSurWeb = GUICtrlCreateLabel("Lire sur le Web", 10, 410, 75, 17) ; Etiquette (label)
GUICtrlSetFont($lbl_LireSurWeb, 8, 400, 4, "MS Sans Serif") ; Définition de la police,
GUICtrlSetColor($lbl_LireSurWeb, 0x0000FF) ; Définition de la couleur
GUICtrlSetTip($lbl_LireSurWeb, "Lire la version en ligne de la licence") ; Infobulle
GUICtrlSetCursor ($lbl_LireSurWeb, 0) ; Définition du curseur
; => Imite une URL
$lbl_ImprimerLicence = GUICtrlCreateLabel("Imprimer", 110, 410, 43, 17) ; Etiquette (label)
GUICtrlSetFont($lbl_ImprimerLicence, 8, 400, 4, "MS Sans Serif") ; => Même mise en forme que précédement
GUICtrlSetColor($lbl_ImprimerLicence, 0x0000FF) ; Imite une URL
GUICtrlSetCursor ($lbl_ImprimerLicence, 0)
#EndRegion ### END Koda GUI section ### ; Fin de la région Koda
_PHP()
GUISetState(@SW_SHOW, $gui_zlam) ; Affichage de la GUI principale
WinActivate(" ZLAM") ; ACtivation de la GUI principale
While 1
$s_GetMsg = GUIGetMsg(1) ; GUIGetMsg en mode étendu afin de pouvoir faire un "switching"
; dans les différents événement des GUI Principale et A Propos
If $s_GetMsg[1] = $gui_zlam Then ; Focus sur la GUI principale
Select ; Début de la structure sur le focus GUI principale
Case $s_GetMsg[0] = $GUI_EVENT_CLOSE Or $s_GetMsg[0] = $ssMn_Quitter ; Fermeture de la GUI
;_MySQLStop() ; A détecter si processus existant
;_ZazouStop() ; A détecter si processus existant
GUISetState(@SW_DISABLE, $gui_zlam)
_Attendre(1000, "Procédure en cours, " & @CR & "veuillez patienter")
ExitLoop ; Sortie de la boucle d'affichage
Case $s_GetMsg[0] = $btn_DemarrerZmws Or $s_GetMsg[0] = $ssMn_DemarrerZMWS ; Démarrage de ZMWS
_ZazouStart() ; Démarrage du serveur
_Attendre(2000, "Démarrage du serveur, " & @CR & _
"Veuillez patienter") ; Attente de lancement
If ProcessExists($s_ZMWSExe) Then ; Structure conditionnelle sur
; l'existance du processus,
; Attention ici le processus à le
; même nom que l'EXE => Variable !
$u_StatusZmws = "Démarré" ; Changement de la valeur du status
GUICtrlSetData($lbl_StatusZMWS2, $u_StatusZmws) ; Indique le Status démarré au label
GUICtrlSetColor($lbl_StatusZMWS2, 0x008000) ; Couleur verte
GUICtrlSetState($btn_ArreterZmws, $GUI_ENABLE) ; Activation du bouton Arrêter ZMWS
GUICtrlSetState($ssMn_ArreterZMWS, $GUI_ENABLE) ; Activation du menu Arrêter ZMWS
GUICtrlSetState($btn_DemarrerMysql, $GUI_ENABLE) ; Activation du bouton Démarrer MySQL
GUICtrlSetState($ssMn_DemarrerMysql, $GUI_ENABLE) ; Activation du menu Démarrer MySQL
EndIf
Case $s_GetMsg[0] = $btn_DemarrerMysql Or $s_GetMsg = $ssMn_DemarrerMysql ; Bouton Démarrer MySQL
#cs
a) _MySQLStart
b) détection des processus -> Mais lesquels ?
-> Changement du status du bouton Arrêter MySQL, rendre actif,
-> Changement du status du menu Arrêter MySQL, rendre actif,
-> Changer le label de Status de MySQL, valeur : Démarré !
#ce
_MySQLStart() ; Démarrage de MySQL
_Attendre(2000, "Lancement MySQL, " & @CR & "Veuillez patienter")
$u_StatusMySQL = "Démarré"
GUICtrlSetState($btn_ArreterMysql, $GUI_ENABLE)
GUICtrlSetState($ssMn_ArreterMysql, $GUI_ENABLE)
GUICtrlSetData($lbl_StatusMysql2, $u_StatusMySQL)
GUICtrlSetColor($lbl_StatusMysql2, 0x008000)
Case $s_GetMsg[0] = $btn_ArreterZmws Or $s_GetMsg[0] = $ssMn_ArreterZMWS ; Arreter ZMWS
If $u_StatusMysql <> "Démarré" Then ; Détection du flag de démarrage
; de MySQL. Utilisation du
; théorème de De Morgant
; Ici status non démarré
GUICtrlSetState($btn_DemarrerMysql, $GUI_DISABLE) ; Désactivation du bouton Démarrer MySQL
GUICtrlSetState($ssMn_DemarrerMysql, $GUI_DISABLE) ; Désactivation du Menu Démarrer MySQL
; !! Pas de changement d'état de
; $s_StatusMySQL ! = <> Demarré
_ZazouStop() ; Arret du serveur ZMWS
_Attendre(2000, "Arrêt du serveur" & @CR & _
"Veuillez patienter") ; Délai d'attente
GUICtrlSetState($btn_ArreterZMWS, $GUI_DISABLE) ; Désactivation du bouton Arrêter ZMWS
GUICtrlSetState($ssMn_ArreterZMWS, $GUI_DISABLE) ; Désactivation du menu Arreter ZMWS
$s_StatusMySQL = "Arrêté" ; Définition du flag status MySQL
GUICtrlSetData($lbl_StatusMysql2, $s_StatusMySQL) ; Mise à jour du label de status MySQL
GUICtrlSetColor($lbl_StatusMysql2, 0x0000FF) ; Couleur rouge
$u_StatusZmws = "Arrêté" ; Définition du flag status ZMWS
GUICtrlSetData($lbl_StatusZMWS2, $u_StatusZmws) ; Mise à jour du label de status ZMWS
GUICtrlSetColor($lbl_StatusZMWS2, 0x0000FF) ; Couleur rouge
Else
; Ici status démarré
_MySQLStop() ; Arrêt de MySQL
_Attendre(2000, "Arrêt de la Data base, " & @CR & _
"Veuillez patienter") ; Délai d'attente
GUICtrlSetState($btn_DemarrerMysql, $GUI_DISABLE) ; Désactivation du bouton Démarrer MySQL
GUICtrlSetState($ssMn_DemarrerMysql, $GUI_DISABLE) ; Désactivation du Menu Démarrer MySQL
; Changement d'état de
; $s_StatusMySQL ! = <> Demarré
GUICtrlSetState($btn_ArreterMysql, $GUI_DISABLE) ; Désactivation du bouton arrêt de MySQL
GUICtrlSetState($ssMn_ArreterMysql, $GUI_DISABLE) ; Désactivation du bouton Arret de MySQL
$u_StatusMySQL = "Arrêté" ; Définition du flag status MySQL
GUICtrlSetData($lbl_StatusMysql2, $u_StatusMySQL) ; Mise à jour du label de status MySQL
GUICtrlSetColor($lbl_StatusMysql2, 0x0000FF) ; Couleur rouge ; flag de status sur Arrêté
_ZazouStop() ; Arret du serveur ZMWS
_Attendre(2000, "Arrêt du serveur, " & @CR & _
"Veuillez patienter") ; Délai d'attente
GUICtrlSetState($btn_ArreterZMWS, $GUI_DISABLE) ; Désactivation du bouton Arrêter ZMWS
GUICtrlSetState($ssMn_ArreterZMWS, $GUI_DISABLE) ; Désactivation du menu Arreter ZMWS
$u_StatusZmws = "Arrêté" ; Définition du flag status ZMWS
GUICtrlSetData($lbl_StatusZMWS2, $u_StatusZmws) ; Mise à jour du label de status ZMWS
GUICtrlSetColor($lbl_StatusZMWS2, 0x0000FF) ; Couleur rouge
EndIf
Case $s_GetMsg[0] = $btn_ArreterMysql Or $s_GetMsg[0] = $ssMn_ArreterMysql ; Arreter MySQL
#cs
a) arrêt de MySQL
-> Gestion d'erreur sur Flag ?? Non nécessaire
b) changement d'état de :
-> Flag Status,
-> Etat Bouton,
-> Etat Menu,
#ce
_MySQLStop() ; Arret de MySQL
_Attendre(2000, "Arrêt de la Data base" & @CR & _
"Veuillez patienter")
$u_StatusMySQL = "Arrêté"
GUICtrlSetState($btn_ArreterMysql, $GUI_DISABLE)
GUICtrlSetState($ssMn_ArreterMysql, $GUI_DISABLE)
GUICtrlSetData($lbl_StatusMysql2, $u_StatusMysql)
GUICtrlSetColor($lbl_StatusMysql2, 0x0000FF)
Case $s_GetMsg[0] = $btn_Minimaliser Or $s_GetMsg[0] = $ssMn_Minimaliser ; Minimaliser
MsgBox(0 + 64, 'Tracking', 'Func Minimaliser') ; => Action à réaliser : icône dans le SysTray
Case $s_GetMsg[0] = $btn_Apropos Or $s_GetMsg[0] = $ssMn_Apropos ; A propos
GUISetState(@SW_SHOW, $gui_APropos)
Case $s_GetMsg[0] = $ssMn_FaireDon ; Faire un don
_Start($s_ZMWSDon)
Case $s_GetMsg[0] = $ssMn_ForumZMWS ; Visiter les forums
_Start($s_ZMWSForum)
Case $s_GetMsg[0] = $ssMn_ZMWSCom ; Visiter le site
_Start($s_ZMWSSite)
EndSelect
ElseIf $s_GetMsg[1] = $gui_APropos Then ; Focus sur la GUI A propos
Select ; Début de la structure sur le focus GUI A propos
Case $s_GetMsg[0] = $GUI_EVENT_CLOSE Or $s_GetMsg[0] = $btn_GUIAboutFermer ; Fermer la GUI A propos
GuiSetState(@SW_HIDE, $gui_APropos) ; !! utiliser @SW_HIDE !!
; ne pas utiliser GUIDelete
; car impossible de recharger la GUI
; par après (variables supprimées)
Case $s_GetMsg[0] = $lbl_VisiterForum ; Visiter le forum
_Start($s_ZMWSForum)
Case $s_GetMsg[0] = $lbl_VisiterSite ; Visiter le site
_Start($s_ZMWSSite)
Case $s_GetMsg[0] = $lbl_FaireDon ; Faire un don
_Start($s_ZMWSDon)
Case $s_GetMsg[0] = $lbl_LicenceZMWSViews ; Voir la licence ZMWS
GUISetState(@SW_HIDE, $gui_APropos) ; Masque la GUI A Propos
GUISetState(@SW_SHOW, $gui_Licence) ; Affiche la GUI Licence
$s_FlagLicence = $s_FichierLicenceGPL ; Flag licence prend la valeur
; de la licence demandée
_Licence()
Case $s_GetMsg[0] = $lbl_LicencePHP ; Voir la licence PHP
GUISetState(@SW_HIDE, $gui_APropos) ; Masque la GUI A Propos
GUISetState(@SW_SHOW, $gui_Licence) ; Affiche la GUI Licence
$s_FlagLicence = $s_FichierLicenceGPL ; Flag licence prend la valeur
; de la licence demandée
_Licence()
Case $s_GetMsg[0] = $lbl_licenceMysql ; Voir la licence MySQL
GUISetState(@SW_HIDE, $gui_APropos) ; Masque la GUI A Propos
GUISetState(@SW_SHOW, $gui_Licence) ; Affiche la GUI Licence
$s_FlagLicence = $s_FichierLicenceGPL ; Flag licence prend la valeur
; de la licence demandée
_Licence()
Case $s_GetMsg[0] = $lbl_licenceOpenssl ; Voir la licence OpenSSL
GUISetState(@SW_HIDE, $gui_APropos) ; Masque la GUI A Propos
GUISetState(@SW_SHOW, $gui_Licence) ; Affiche la GUI Licence
$s_FlagLicence = $s_FichierLicenceOpenSSL ; Flag licence prend la valeur
; de la licence demandée
_Licence()
EndSelect
ElseIf $s_GetMsg[1] = $gui_Licence Then ; Focus sur la GUI Licence
;MsgBox(0, '', 'Flag licence : ' & $s_FlagLicence)
;$FichierTexteLecture = StringReplace(FileRead($s_FlagLicence = FileOpen($s_FlagLicence, 0), _
; FileGetSize($s_FlagLicence)), @CRLF, @LF)
;MsgBox(0, '', 'Fichier texte' & $FichierTexteLecture)
;GUICtrlSetData($s_LicenceDansGUI, $FichierTexteLecture)
Select
Case $s_GetMsg[0] = $btn_FermerLicence Or $s_GetMsg[0] = $GUI_EVENT_CLOSE ; Si je ferme la GUI Licence
; Via bouton Fermer
GUISetState(@SW_HIDE, $gui_Licence) ; Masque la GUI Licence
$s_FlagLicence = "" ; Reset le Flag Licence
GUISetState(@SW_SHOW, $gui_APropos) ; Affiche la GUI A Propos
Case $s_GetMsg[0] = $lbl_LireSurWeb ; Je veux consulter la licence
; sur le Web
If $s_FlagLicence = $s_FichierLicenceGPL Then ; Structure conditionnelle pour
; savoir à quoi correspond la
; licence
_Start($s_GPLSurWeb)
ElseIf $s_FlagLicence = $s_FichierLicenceOpenSSL Then
_Start($s_OpenSSLSurWeb)
Else
MsgBox(16 + 64, "Erreur", "Une erreur est survenue pendant le traitement de l'impression de la licence" & _
@CR & "Veuillez reporter le code erreur suivant sur les forums de ZMWS (http://www.zmws.com/forum) " & _
@CR & "GUI : " & $s_GetMsg[1] & _
@CR & "Contrôle = " & $s_GetMsg[0] & _
@CR & "Fonction = _FilePrint(" & $s_FlagLicence & ")" & _
@CR & "Variable = " & $s_FichierLicenceGPL)
EndIf
Case $s_GetMsg[0] = $lbl_ImprimerLicence ; Impression de la licence
If $s_FlagLicence = $s_FichierLicenceGPL Then ; Structure conditionnelle pour
; savoir à quoi correspond la
; licence
_FilePrint($s_FichierLicenceGPL)
ElseIf $s_FlagLicence = $s_FichierLicenceOpenSSL Then
_FilePrint($s_FichierLicenceOpenSSL)
Else
MsgBox(16 + 64, "Erreur", "Une erreur est survenue pendant le traitement de l'impression de la licence" & _
@CR & "Veuillez reporter le code erreur suivant sur les forums de ZMWS (http://www.zmws.com/forum) " & _
@CR & "GUI : " & $s_GetMsg[1] & _
@CR & "Contrôle = " & $s_GetMsg[0] & _
@CR & "Fonction = _FilePrint(" & $s_FlagLicence & ")" & _
@CR & "Variable = " & $s_FichierLicenceGPL)
EndIf
EndSelect
EndIf
WEnd
Exit ; Sortie totaleZLAM_INCLUDE_V0XYYALPHA.AU3
; Nom de la fonction : - NA -
; Rôle : extériorisation des principales fonctions
; Dépendance :
; Auteur : Fabrice, Groumphy
; Modification : Groumphy, Fabrice, Pilgrim
; Version : v0.2.248.alpha
; Information importante :
; Précise que le fichier ne doit ABSOLUMENT être encodé qu'une unique fois !
#include-once
; Nom de la fonction : _FilePrint
; Rôle : Imprime un fichier spécifique
; Dépendance : shell32.dll
; Auteur : SvenP
; Modification :
; Version :
; Information importante : Application ou reconnaissance de l'extension connue par le système
Func _FilePrint($u_FileName)
Const $s_SW_SHOWNORMAL = 1
$s_aResult = DllCall("shell32.dll","int","ShellExecute","hwnd",0,"str","print","str",$u_FileName,"str","","str","","int",$s_SW_SHOWNORMAL)
return $s_aResult[0]
EndFunc ; ==> _FilePrint("NomDuFichierEtChemin.pdf")
; Nom de la fonction : _Start
; Rôle : lancer une application spécifique
; Dépendance : Aucune
; Auteur : Rob Saunders, Sven P
; Modification : Groumphy
; Version : v1.0.1
; Information importante :
Func _Start($s_CheminApp)
Local $s_CmdApp
If @OSTYPE = 'WIN32_NT' Then
$s_CmdApp = @ComSpec & ' /c start "" '
Else
$s_CmdApp = @ComSpec & ' /c start '
EndIf
Return Run($s_CmdApp & $s_CheminApp, '', @SW_HIDE)
If @error = 1 Then
MsgBox(16 + 64, "Erreur", "Impossible de lancer l'application demandée, " & _
@CR & "veuillez reporter le code erreur suivant sur le forum ZMWS (http://www.zmws.com/forum) : " & _
@CR & "Fonction : _Start" & @CR & "Application : " & $s_CmdApp & _
@CR & "Variable : " & $s_CheminApp & _
@CR & "Erreur : " & @error)
EndIf
EndFunc ; => _Start('monApplication.exe')
; Nom de la fonction : _ZazouStart
; Rôle : lancer l'application ZazouMiniWebServer.exe
; Dépendance : _Start
; Auteur : Groumphy
; Modification :
; Version : v0.1.202.alpha
; Information importante :
Func _ZazouStart()
Return _Start($s_ZMWSExe & ' -browse -stop -closebrowser')
If @error = 0 Then
MsgBox(16 + 64, "Erreur", "Impossible de lancer l'application demandée, " & _
@CR & "veuillez reporter le code erreur suivant sur le forum ZMWS (http://www.zmws.com/forum) : " & _
@CR & "Fonction : _ZazouStart" & _ ; @CR & "Application : " & $s_CmdApp & _
@CR & "Variable : " & $s_ZMWSExe & ' -browse -stop -closebrowser' & _
@CR & "Erreur : " & @error)
EndIf
EndFunc ; => _ZazouStart()
; Nom de la fonction : _ZazouStop
; Rôle : arrêter l'application ZazouMiniWebServer.exe
; Dépendance : _Start
; Auteur : Pilgrim
; Modification : Groumphy
; Version : v0.1.201.alpha
; Information importante :
Func _ZazouStop()
Return _Start($s_ZMWSExe & ' -shutdown')
EndFunc ; => _ZazouStop()
; Nom de la fonction : _MySQLStart
; Rôle : lancer l'application MySQL
; Dépendance : _Start
; Auteur : Groumphy
; Modification :
; Version : v0.1.200.alpha
; Information importante :
Func _MySQLStart()
Return _Start('mysql\bin\mysqld-max.exe --no-defaults --skip-innodb --datadir=..\data --pid-file=NUL')
EndFunc ; => _MySQLStart()
; Nom de la fonction : _MySQLStop
; Rôle : Arrête l'application MySQL
; Dépendance : _Start
; Auteur : Groumphy
; Modification :
; Version : v0.1.200.alpha
; Information importante :
Func _MySQLStop()
Return _Start('mysql\bin\mysqladmin.exe shutdown --user=root')
EndFunc ; => _MySQLStop()
Func _Attendre($u_Ms, $u_Texte)
SplashTextOn("ZLAM - ...", $u_Texte, 200, 60, -1, -1, 0 + 1 + 16, "Tahoma", -1, -1)
WinActivate("ZLAM - ...")
Sleep($u_Ms)
SplashOff()
EndFunc
; Nom de la fonction : _Licence
; Rôle : Détermine le fichier à insérer dans la GUI Licence
; Dépendance : GUI A Propos, GUI Licence
; Auteur : Groumphy
; Modification :
; Version : v0.2.237.alpha
; Information importante : Alias de GUICtrlCreateLabel
Func _Licence()
$s_OuvertureFichierLicence = FileOpen($s_FlagLicence, 0)
$s_Lecturefichier = FileRead($s_OuvertureFichierLicence, _
FileGetSize($s_FlagLicence))
$s_LicenceLue = StringReplace($s_Lecturefichier, @CRLF, @LF)
GUICtrlSetData($s_LicenceDansGUI, $s_LicenceLue)
EndFunc
; Nom de la fonction : _PHP
; Rôle : Vérifie la présence de PHP et détermine la version si PHP5 est présent
; Dépendance :
; Auteur : Groumphy
; Modification :
; Version : v0.2.209.alpha
; Information importante :
Func _PHP()
If FileExists(@ScriptDir & "\PHP5") And FileExists(@ScriptDir & "\PHP5\php.exe") Then
$u_StatusPHP = FileGetVersion(@ScriptDir & "\PHP5\php.exe")
GUICtrlSetData($lbl_StatusPHP2, $u_StatusPHP)
GUICtrlSetColor($lbl_StatusPHP2, 0x008000)
ElseIf FileExists(@ScriptDir & "\PHP") Then
$u_StatusPHP = "OK"
GUICtrlSetData($lbl_StatusPHP2, $u_StatusPHP)
GUICtrlSetColor($lbl_StatusPHP2, 0x008000)
Else
$u_StatusPHP = "Non installé"
GUICtrlSetData($lbl_StatusPHP2, $u_StatusPHP)
GUICtrlSetColor($lbl_StatusPHP2, 0xFF0000)
EndIf
EndFuncAfin de profiter au maximum des dernières implémentations, il est important d'avoir la configuration suivante :
1. pack ZMWS + PHP,
2. fichier licence a la racine du dossier ZMWS (Cf. source pour les noms, le contenu me semble assez explicite),
3. avoir les sources en racine de ZMWS,
Je pense que c'est tout, et s'il y a autre chose, n'hésitez pas !
Dernière modification du topics :
- 04.09.2006 @ 18.02
- 02.09.2006 @ 11.56
- 01.09.2006 @ 13.38
- 31.09.2006 @ 15.06
Excellente continuation,
Groumphy
Dernière modification par Groumphy (04/09/2006 18:04:07)
Hors ligne
Bon j'ai craqué, je viens sur le forum ce soir. Demain j'attaque les mises en conditions pour l'activation des contrôles, ... Cela devrait déjà donner un peu plus de vie à ZLAM.
@ Fabrice > Est-ce que tu suis dans les tests ? ![]()
@ Pilgrim > Et ta revue de fonction ? ![]()
Hors ligne
Ca arrive pour les fonctions, j'ai nettoyé les miennes pour ne garder que ce qui est spécifique a ZMWS dans mes fonctions ZMWS_Start(), ZMWS_Stop(), ... Je vous les publierai demain probablement - je suis toujours un peu perfectionniste, j'aime bien quand les choses sont bien carrées et je trouve que ca n'est pas encore le cas, c'est tout moi ca ![]()
A ce propos, voici ma facon de coder les noms de fonction module_fonction() genre :
- ZMWS_Start(), ZMWS_Stop(), ZMWS_Restart(), ZMWS_GetIps(), ZMWS_GetConfig(), ...
- ZMNGR_BuildTrayMenu(), ZMNGR_SetTrayMenu(), ...
J'ai aussi des constantes définies de la maniere suivante, un peu sur le meme principe :
- $E_NOTICE, $E_WARNING, $E_ERROR pour la gestion d'erreur standard ;
- $ZMWS_DLL_FILENAME, $ZMWS_CONFIG_FILENAME, $ZMWS_STATUS_STOPPED, $ZMWS_STATUS_RUNNING, $ZMWS_STATUS_ERROR, $ZMWS_STATUS_BUSY (d'ailleurs les fonctions ZMWS_Start(), ZMWS_Stop() et ZMWS_Restart() retourneront une constante de status plutot qu'un simple true/false, ca sera plus finement géré comme ca) ;
- $ZMNGR_CONFIG_AUTORELOAD (qui ne sera bientôt plus une constante mais une option de configuration dans un fichier ini je pense).
Avec tout ca et bien d'autres choses, on arrive a un code qui est plutot "propre" et comprehensible rapidement du genre :
; Démarrage du serveur
If ZMWS_Start() = $ZMWS_STATUS_ERROR Then
; Si une erreur survient, on affiche un message d'erreur, le serveur est alors arrêté
TrayNotify("ZMWS manager", "Impossible de démarrer le serveur. Vérifiez vos options...", $E_ERROR)
Else
; On change l'état des éléments du menu (items Démarrer, Redémarrer, Arrêter, ...)
ZMNGR_SetTrayMenu($ZMWS_STATUS_RUNNING)
EndIfVoilà le genre, je vous fais passer le fichier de fonctions en même temps que le ZMWS Manager 0.5. en esperant qu'on puisse tous utiliser un même fichier de fonctions ZMWS au final.
Concernant ton fichier de fonctions :
- Que fait exactement la fonction _FilePrint() et en quoi est-elle utile ici ?
- Pour un "" sous WIN32_NT dans la fonction _Start() ? Je ne vois pas trop ce que ca fait...
- Dans _ZazouStart(), je ne mettrai que l'option "-stop", le reste sera à mettre dans le fichier de configuration ; pour ma part, je ne fais jamais lancer le navigateur au demarrage du serveur, ca me gonfle trop... mais c'est un gout perso.
- Dans _ZazouStop(), que se passe-t-il si le port n'est pas le port 80 ? Normalement c'est "zmws.exe -P 8080 -shutdown par ex" (si mes souvenirs sont bons)
- Idem pour MySQL, le mieux serait de ne passer que le chemin vers le fichier de configuration (my.ini ou mysql.cnf je crois), les autres options seront dans ce fichier
- Pour zmws_get_version(), je retournerai plutot False s'il y a une erreur car si on veut vraiment l'erreur, on pourra utiliser @error qui sera rempli (m'enfin, je dis ca mais pour ma part, je retourne la valeur retournée par la DLL, ce qui doit etre une chaine vide... Xavier c'est bien ca ?)
- Pour zmws_get_ips() meme remarque que pour get_version (et puis on peut tout a fait passer par @IPAddress1 et suivant, c'est pas une hérésie LOL)
- Pour les fonctions ZMWS_Start(), Stop() et Restart(), je vous ferai passer les miennes sous peu comme indiqué plus haut.
Voilà, j'espere ne pas avoir été trop bavard ![]()
A+
David
Hors ligne
Salut Groumphy,
De mon côté, je me suis basé sur le fonctionnel de l'application. En mode console évidemmment.
GUI
* Démarrer et Arrêter ZMWS devraient être grisés selon que le serveur soit actif ou pas
* Le label de Arrêter ZMWS est le même que Démarrer
* Les liens vers les licences locales devraient être actifs selon que le fichier soit présent ou pas.
Sinon, on bascule directement sur le web.
Serveur
* Tu peux détecter le démarrage du serveur afin de mettre à jour l'état du serveur
* Une option pour masquer la console serait la bienvenue
* Récupérer la config du serveur et surtout le port en mode console est relativement compliqué.
Là est l'avantage certain de la DLL.
Voili, voilou. Je mettrais à jour ce post selon tes avancés ![]()

Hors ligne
<hs>
Put**n je râle, je venais de taper toutes mes réponses et j'ai fais une fausse manipulation et tout s'est effacé !
</hs>
Hello,
Merci déjà de votre aide.
@ Pilgrim >
a) _FilePrint : sert à imprimer les licences (en cours d'implémentation), un p'tit goonies sympathique ;
b) _Start() : le double quote est principalement du à une à une différence syntaxe et d'option au lancement à partir d'un CMD.EXE généré par @ComSpec ;
c) ZazouStart() : hum, ce sont des options aisément paramétrable... Pour le moment, je ne conserve que cela comme ça et adapterais par la suite, je note juste ce que je ne dois pas oublier,
d) ZazouStop() : excellente question sur les ports... Hum, théoriquement si je ne dépose pas de port, le port n'est-il pas capturé ? Et donc reporté dans la fermeture ? Hum, à défaut, je ferais un paramètre global dans le Start qui sera reporté dans le Stop pour le port...
e) MySqlStop() : hum, là j'ai dur à te suivre, si j'ai tout bien compris je ne garderais que l'option Shutdown car les autres renseignements sont repris dans les fichiers de configuration c'est bien ca ??
f) zmws_get_version() : devra disparaitre de ZLAM dans un premier temps car utilise la DLL, hors la DLL ne sera implémentée que plus tard. Il faut que je fasse un FileGetVersion sur l'EXE mais aussi vérifier si le schème numbering est respecté et identique à la DLL... Donc à suivre...
g) zmws_get_ips() : devra disparaitre de ZLAM dans un premier temps car utilise la DLL, hors la DLL ne sera implémentée que plus tard. J'utiliserais pour les prochaines MAJ le @IPAdresse1 mais sauf erreur de ma part, le @IPAdresse1 pose problème sur un réseau de classe A et B (dans ce cas, il faut que j'utilise le 2...) mais ces informations sont incertaines !
h) ZMWS_Start/Stop/Restart : doivent disparaitre car utilise la DLL ! Seront prochainement remplacées par un Start/Stop supportant l'EXE
@ Fabrice >
GUI :
a) Gestion des contrôles : c'est prévu et dans le dernier fjork v03 c'est déjà en partie implémenté ! Donc encore un peu de patience !
b) Infobulle Arrêt ZMWS : fixé !
c) Lien vers licence : bonne idée... Que je vais implémenter !
SERVER :
a) Etat du serveur : encore à implémenter, c'est prévu !
b) Console : encore à implémenter (Cf. code source) ;
c) Port : comme indiqué à Pilgrim, je vais essayer de voir cela par un système de variable ! A suivre et encore à implémenter. (donc en étude pour le moment) ;
Merci de votre aide pour cela, aujourd'hui, je fais une petite mise à jour, mais j'aurais pas beaucoup le temps !
Donc en majorité la semaine prochaine...
G.
Hors ligne
Hello,
a) Ok, sympathique
d) Avec l'exe et -shutdown, c'est une deuxieme instance qui est lancé et qui fermer la premiere ; il n'y a aucun passage d'info entre les deux et il faut donc préciser à la deuxieme instance le port de la premiere s'il est différent de 80. En effet, si tu peux recuperer le port au lancement de l'exe, tu le passes en option a _ZazouStop( $port ) et le tour est joué
d) et e) Oui, tout est paramétrable dans le fichier de config, il suffit de passer le chemin ou MySQLD doit le trouver (--default-file=) je crois
g) d'ou sors-tu que "@IPAdresse1 pose problème sur un réseau de classe A et B" ? L'utilisation de zmws_get_ips() ne pose aucun pb, je disais ca juste pour eviter un appel de fonction supplémentaire à la DLL mais @IpAdress[n] doit aussi faire appel a une fonction etant donné que c'est une macro ; donc, OK, on utilise zmws_get_ips(), je le ferai aussi dans le manager ![]()
A+
David
Hors ligne
d) Ok je modifie donc la fonction, ... J'utiliserais le port 80 part défaut dans le _ZazouStart($port) et _ZazouStop($port) et je préciserais la variable $port = "80" avant. Cette option pourra être personnalisable par après... (Cf. un fichier spécifique ou autre, à voir).
e) Hum, MySQL j'y connais que dalle... Alors pour le moment, je laisse comme cela... Je modifierais par après... Tiens-moi informé du paramètre si tu le retrouve.
g) Hmm, simple suposition... Mais apparement tu n'a pas rencontré de problème, j'ai déjà adapté de toute facon
J'adapterais par après selon le package. Pour le moment essayons de que le manager et l'interface soient séparé, l'un étant le secours de l'autre ![]()
A+
G.
Hors ligne
d) il faut savoir que zmws teste le port 8080 si le 80 est deja pris, puis 8081 si 8080 est deja pris, etc. jusqu'a 8089 ; il faut donc trouver une maniere de recuperer le port dynamiquement... avec la DLL, y'a pas de soucis mais je ne sais pas si c'est possible avec l'EXE ;
e) ok, on en reparlera de toutes facons ;
g) Simple supposition... tu as lu ca quelque part ? Ca pourrait etre interessant d'en savoir un peu plus maintenant que tu as mis un doute ![]()
A+
Dav.
Hors ligne
@ Xavier > Pourrais-tu lors de tes prochaines mises à jours de tes EXE, encoder dans les propriétés de la compilation pour l'EXE, le même schème numbering que dans la DLL. En effet, j'utilise le FileGetVersion('zazouminiwebserver.exe') de AutoIt pour déterminer la version disponible hors DLL (implémentation postérieure) et il me retourne 0.0.0.0 ... Po cool !
Si j'intérroge la DLL, j'ai bien un type de version.
Tu reportes cela dans l'environnement de console :
13:19:32: ZazouMiniWebServer 1.0.0-rc4
mais pas dans les propriétés de compilations... Et j'ai cherché mais pas trouvé la propriété exacte à changer...
@ Pilgrim > pour le port 80, s'il y a erreur y a t'il un retour d'erreur ? Ce serait pas mal... A suivre, ...
G.
Hors ligne
Groumphy a écrit:
@ Pilgrim > pour le port 80, s'il y a erreur y a t'il un retour d'erreur ? Ce serait pas mal... A suivre, ...
Pour l'exe, je ne sais pas mais pour la DLL, si le serveur est démarré ca retourne 0 sinon ca retourne 1 (ou un nombre positif, en tout cas).
A+
Hors ligne
Plop,
Il n'y a pas de ressources de version (ni aucune autre dan l'exe) c'est pour ça qu'on n'a pas de version.
a+
Hors ligne
pilgrim a écrit:
il faut donc trouver une maniere de recuperer le port dynamiquement... avec la DLL, y'a pas de soucis mais je ne sais pas si c'est possible avec l'EXE
Non, ce n'est pas possible (dites, vous suivez pas les liens de mes réponses ?
)

Hors ligne
c'est possible en bidouillant une regexp sur la sortie d'un tcpview like en console ...
mais bon...
Hors ligne
Enfin, une réponse plausible quoiqu'utilisant une autre programme. J'ai nommé TCPVCon
Le code qui nous intéresse pour retourné le port du ZMWS Console lancé est celui-là :
> tcpvcon.exe -a ZazouMiniWebServer.exe -c TCP,C:\Documents and Settings\utilisateur\Mes documents\ZMWS\ZazouMiniWebServer.exe,2288,LISTENING,ToTo:8080,ToTo:0
Evidemment, on prendra soin de récupérer cela dans un fichier texte afin de filtrer sur le serveur qui nous intéresse (car plusieurs serveurs peuvent être lancés... y compris celui déjà lancé par ZLAM
).
Merci Xavier de cette piste vers une solution externe. Le tout en AutoIt intégré aurait été mieux m'enfin... on fait des merveilles avec FileInstall ![]()
PS : Merci UPX...
File size Ratio Format Name
-------------------- ------ ----------- -----------
94208 -> 39424 41.85% win32/pe tcpvcon.exeDernière modification par Fabrice (01/09/2006 22:12:17)

Hors ligne
Le plus simple serait de forcer le port dans le fichier de config et on n'en parle plus... pasque là si ZLAM a des dependances externes de ce type, je ne sais pas s'il va avoir du succes... Le numero de port est lu depuis le fichier de config ensuite zmws.exe -p $Port et idem pour le stop...
Y'a aussi la possibilité de tuer le process ZazouMiniWebServer.exe mais là c'est plus du du bourin !
Hors ligne
Ben alors ZLAM c'est pas pour moi ![]()
Hé oui, il y a ceux qui n'aime pas les couleurs et les iconnes qui font pouet pouet, et il y a ceux qui adorent la liberté que propose ZMWS de chercher lui même un port de disponible
. J'en fais partie et c'est surtout pour cela que je me suis penché sur AutoIt + ZMWS.
A mon sens, quelque soit le programme externe (manager, systray, webservice...), il ne doit pas brider les fonctionnalités offertes par ZMWS.
Peut-être un jour la console permettra de partager de façon simple son port dynamique. C'est en fait la seule valeur de configuration que l'on ne peut deviner (le reste est dans le .ini
)

Hors ligne
En ce qui me concerne, tout ce qui plaît à l'utilisateur final me plaît.
Ce logiciel est dispo pour ce qu'il peut apporter.au plus grand nombre. Sinon, je l'aurais gardé pour moi seul ...
Ce qui n'empêche toutefois pas de développer des solutions n'arrangeant qu'une minorité, tant qu'elles ne nuisent pas à ce qui plaît à la majorité...
Toussa, toussa ...
a+
Hors ligne
Hello,
@ Fabrice & Pilgrim > Dans la GUI, je peux par exemple implémenter une demande de port... Une combo demandant le port. S'il n'est pas attribué, je prend un port très peu utilisé (le 8087 par exemple)...
Enfin il y a moyen de ne pas forcer tout en contrôlant.
@ Fabrice > J'avais lu ton lien et j'avais déjà orienté mon dev vers la solution de Pilgrim mais avec une non implémentation directe ou encore un non forcage du port (sauf pour le dev par exemple et uniquement par facilité).
Dans ce cas, je fais une simple capture de la valeur du combo sur une structure conditionnelle et je rajoute l'attribut reporté dans une variable sur la ligne de commande en tant qu'attribut de ZMWS en mode console... Donc je n'impose rien ![]()
@ Xavier > Ouch ! Pas cool pour le système de propriété avec les versions de l'EXE. Tu compiles l'EXE avec quoi (y doit bien y avoir une option de compilation pour mettre dans l'attribut de l'EXE un numéro de version, grrrrrr... OSKOUR !) ? (Fais attention sinon je te boude pendant 30 secondes !!)
Hors ligne
Pour la version, c'est comme le reste, si ça ne nuit pas au plus grand nombre, ça ne me dérange pas de l'ajouter
Hors ligne
@ Xavier > Gné, ... Je croyais que c'était pas possible (Cf. ton post précédent). Ou tu as mal compris ou je me suis mal exprimé !
En fait il s'agit d'une propriété de l'exécutable, pas un report de variable. Donc en global quand tu compiles en EXE, tu devrais avoir moyen de reporter un numéro de version qui va s'inscrire dans les propriétés de l'application... Et qui est lisible par FileGetVersion() de AutoIt.
G.
Hors ligne
Une derniere solution pour garder cette adaptation automatique de numero de port, c'est que ca soit ZLAM lui-même qui fasse la detection...
Je ne sais pas (encore) comment on fait un test de port avec AutoIt mais si c'est possible, il faut tester le port 80, puis 8081, puis... jusqu'a 8089 (pour garder le comportement de l'exe seul).
Ensuite, il faut ajouter le n° de port en parametre de _ZazouStart() et _ZazouStop() et Fabrice retrouve sa liberté ![]()
Hors ligne
Fabrice a écrit:
A mon sens, quelque soit le programme externe (manager, systray, webservice...), il ne doit pas brider les fonctionnalités offertes par ZMWS.
Oui, il faut que la surcouche (ZLAM, ZMNGR, ...) offre au moins ce que propose ZMWS... et c'est pas pour vous faire peur mais n'oubliez pas les options de ligne de commande. ![]()
Hors ligne
Hé, on est bête, il suffit de demander a l'exe lui-meme de nous dire de quel port il veut bien ![]()
Si on connait les valeurs de retour quand on lance l'exe et qu'il plante, c'est p-e gagné (c'est pas forcément élégant comme méthode mais bon) : il suffit de boucler faire un tableau des ports à tester :
;~ Liste des ports à tester $ZMWS_ALLOWED_PORTS[11] = [80,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089]
Et ensuite on utilise la fonction Run() pour lancer et tester le port : si la valeur de retour est celle correspondant à une erreur, on passe au port suivant.
Qu'en pensez-vous ?
Avec cette méthode et celle que j'ai indiqué plus haut où c'est AutoIt qui fait le test de port, on devrait finalement s'en sortir... :p
Hors ligne
Port' nawak
La version n'est pas une propriété d'un exécutable. Il s'agit d'une entrée particulière dans des ressources.ajoutées à l'exe, au même titre que l'icône ...
Hors ligne
pilgrim : Tout à fait d'accord pour la ligne de commande. D'ailleurs, mes managers actuels (Console) doivent être lancés selon certains paramêtres pour que toutes les options soient effectives (console affichée...). D'où la bascule à la DLL.
D'accord aussi pour la détection du port depuis ZLAM ou autre (en AutoIt).
Xavier, en utilisant les fonctions TCP de AutoIt, quel serait l'échange à mettre en place afin de détecter la présence de ZMWS sur un port particulier ?
Le code suivant me renvoit systématiquement 288 en socket pour pratiquement tous les serveurs lancés
$g_IP = "127.0.0.1" ; Start The TCP Services ;============================================== TCPStartUp() ; Connect to a Listening "SOCKET" ;============================================== $socket = TCPConnect( $g_IP, 8080 ) msgbox(0,"Socket",$socket)
Enre TCPConnect, TCPListen etc... c'est encore des processus serveurs que je ne maitrise pas.
Peut-être existe t'il une façon d'être sûr que ce soit ZMWS sur un port... non ?!?
Dernière modification par Fabrice (02/09/2006 00:36:19)

Hors ligne