Depuis quelques temps déjà j'avais dans l'idée de créer une application permettant de prévenir les utilisateurs connectés sur leur poste de travail d'un message important... j'ai donc imaginé une application en deux parties : un "serveur" jouant le rôle d'écriture du message, installé sur un poste dédié, et un "client" installé sur tous les autres postes ayant besoin du service. Aucun lien réseau entre eux si ce n'est la présence d'un fichier de configuration définissant le chemin vers fichier commun situé sur un lecteur réseau nommé "readme.txt" et parametrable dans les deux applications ; Le serveur est chargé d'écrire les messages dans celui-ci, le client est chargé de les lires.
Le serveur est une simple GUI avec un richedit (pour le CTRL+A), le client est basé sur un programme en systray qui, à l'arrivée d'un nouveau message (changement de date du fichier ou fichier >0 octets) déclenche un splashtexton lisant ce readme.txt et se refermant après 20 secondes. Toutes les secondes, la présence du fichier est testé ainsi que la date comparée.
testé sur 3 ordinateurs en réseau ce dernier fonctionne parfaitement. Si certains se sentent d’améliorer le code en utilisant un protocole plutot qu'un fichier sera très enrichissant. De mon coté, dans mon entreprise, il faut ouvrir des portes dans l'antivirus, ce qui n'est jamais très bon quand on veut mettre de la sécurité dans son réseau.
Je vous laisse les codes sources:
l'application serveur :
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=MESSAGE-INFO-CIC.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <file.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiRichEdit.au3>
$version="version 1.0"
$textoffile=""
$textforwrite=""
$sfile = @TempDir & "\readme.txt"
$fileconfig = @ScriptDir & "\confmessager.ini"
$Form1 = GUICreate("GENEREZ UN MESSAGE A AFFICHER", 603, 200, 154, 280)
$Button_cancel = GUICtrlCreateButton("Annuler", 396, 136, 97, 25)
$Button_ok = GUICtrlCreateButton("OK", 292, 136, 89, 25)
$Edit1=_GUICtrlRichEdit_Create($Form1,"", 16, 32, 481, 97,BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
;$Edit1 = GUICtrlCreateEdit("", 16, 32, 481, 97)
$Label1 = GUICtrlCreateLabel("Entrez ici le texte du message à faire afficher dans les Aubettes", 16, 8, 301, 17)
$Button_suppr = GUICtrlCreateButton("Supprimer fichier", 504, 30, 89, 41)
$Button_suppr_text = GUICtrlCreateButton("Supprimer texte", 504, 80, 89, 41)
$MenuItem1 = GUICtrlCreateMenu("&Menu")
$menuitem3 = GUICtrlCreateMenu("&Aide")
$idFileItem1 = GUICtrlCreateMenuItem("&Configuration", $MenuItem1)
$idFileItem2 = GUICtrlCreateMenuItem("&Supprimer le texte", $MenuItem1)
$idFileItem3 = GUICtrlCreateMenuItem("S&upprimer readme.txt", $MenuItem1)
$aideitem=GUICtrlCreateMenuItem("A propos",$menuitem3)
$helpitem=GUICtrlCreateMenuItem("Aide",$menuitem3)
$fileconfig=@ScriptDir & "\confmessager.ini"
$recherche_fileconfig= FileFindFirstFile($fileconfig)
if $recherche_fileconfig = -1 Then
$RechercherFichier = FileSelectFolder("Application non configurée, veuillez indiquer le repertoire pour le fichier Readme.txt", @WindowsDir)
If @error Then
MsgBox(0,"MESSAGE-INFO-CIC Erreur !", "Sans ce fichier readme.txt je ne sers a rien !" & @CRLF & "Je quitte...")
_exit_app()
Else
ConsoleWrite("le fichier existe")
IniWriteSection($fileconfig, "config", "chemin=" & $RechercherFichier & "readme.txt")
if @error then
msgbox(64,"MESSAGE-INFO-CIC","Erreur, je n'ai pas pu ecrire le fichier")
Else
msgbox(64,"MESSAGE-INFO-CIC","Le fichier de configuration a été ecrit avec succès" & @crlf & "le chemin est : " & IniRead($fileconfig, "config", "chemin", "Erreur") & @CRLF & "n'oubliez pas de coper ce fichier de configuration" & @CRLF & "avec le logiciel INFO-PAF")
EndIf
Global $sfile = IniRead($fileconfig, "config", "chemin", "Erreur")
EndIf
Else
Global $sfile = IniRead($fileconfig, "config", "chemin", "Erreur")
EndIf
if FileExists($sfile) Then ; gestion du fichier readme.txt
$fileopen = FileOpen($sfile)
$textoffile=FileRead($sfile)
_GUICtrlRichEdit_AppendText($Edit1, $textoffile & _dateheure & @CRLF) ; la preference pour cette fonction est simple, elle permet de faire un ctrl + a dans l'edit
FileClose($fileopen)
else
_GUICtrlRichEdit_AppendText($Edit1, _dateheure() & @CRLF) ; permet d'horodater le message
EndIf
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Button_cancel
_exit_app() ; on ne peut pas mettre un exit directement rich text edit demande a ce que la gui soit supprimée avant sinon crash
case $Button_ok
FileDelete($sfile) ; on efface l'ancien fichier
_FileCreate($sfile); pour le recreer
$text = _GUICtrlRichEdit_GetText($Edit1) ; recuperation du texte dans l'edit
$aText = StringRegExp($text, '(?m)^(.+|\s+)$', 3) ; et copie dans un buffer des caractères
For $i = 0 To UBound($aText) - 1
$textforwrite = $aText[$i]
FileWriteLine($sfile, $textforwrite & @crlf) ; pour les envoyer dans le fichier readme.txt
Next
Exit
Case $Button_suppr, $idFileItem3 ; gestion du bouton supprimer fichier et du menu supprimer
FileClose($sfile)
FileDelete($sfile)
msgbox(64,"MESSAGE-INFO-CIC","Fichier supprimé !")
_exit_app()
case $idFileItem1 ; gestion de la configuration de l'ini
_Configfichier()
case $idFileItem2, $Button_suppr_text ; gestion de la suppression du texte; si on ne veux pas supprimer le fichier.
_GUICtrlRichEdit_AppendText($Edit1," ")
send("{LCTRL}^{a}") ;CTRL + A
send("{DEL}") ;DEL
_GUICtrlRichEdit_AppendText($Edit1, _dateheure() & @CRLF)
Case $aideitem
MsgBox(0,"MESSAGE-INFO-CIC","Concept & devellopement" & @CRLF & "Marc GRAZIANI", 10)
Case $helpitem
_splashtext_aide()
EndSwitch
WEnd
Func _Configfichier()
$msg = MsgBox(4, "MESSAGE-INFO-CIC", "le fichier de configuration indique :" & @CRLF & IniRead($fileconfig, "config", "chemin", "non configuré") & @CRLF & @CRLF & "Voulez vous le changer ?")
If $msg = 6 Then
$RechercherFichier = FileSelectFolder("Veuillez indiquer le repertoire pour le fichier Readme.txt", @WindowsDir)
IniWriteSection($fileconfig, "config", "chemin=" & $RechercherFichier & "readme.txt")
if @error then
msgbox(64,"MESSAGE-INFO-CIC","Erreur, je n'ai pas pu ecrire le fichier")
Else
msgbox(64,"MESSAGE-INFO-CIC","Le fichier de configuration a été ecrit avec succès" & @crlf & "le chemin est : " & $RechercherFichier & "\readme.txt" & @CRLF & "n'oubliez pas de copier ce fichier de configuration" & @CRLF & "Sur les postes en aubette")
EndIf
$sfile = IniRead($fileconfig, "config", "chemin", "Non configuré")
Else
Return
EndIf
EndFunc ;==>_Configfichier
Func _exit_app()
_GUICtrlRichEdit_Destroy($Edit1)
exit
EndFunc
Func _dateheure()
$date="Le " & @MDAY & "/" & @MON & "/" & @YEAR & " à " & @HOUR & ":" & @MIN & ":" & @SEC & " Venant de " & @UserName
return $date
EndFunc
func _splashtext_aide()
local $larg = 600, $haut = 400
Local $PosW = @DesktopWidth / 2 - $larg, $PosH = @DesktopHeight / 2 - $haut - 65 ; Global $PosW = @DesktopWidth - $larg, $PosH = @DesktopHeight - $haut - 65 ; en bas a droite
;Global Const $PosW = 1, $PosH = @DesktopHeight - $haut - 50 ; en bas a gauche
local $helptext = @CRLF & _
"Ce logiciel à été pensé pour permettre au personnel travaillant en aubette" & @CRLF & _
"d'être informé en temps réel de l'arrivée d'une fiche dans les locaux de la CIC " & _
"l'opérateur CIC écrit son message et en cliquant sur ok, un fichier commun aux deux " & _
"applications nommé ""readme.txt"" sera ecrit puis lu par l'application INFO-PAF-CIC " & _
"qui l'affichera sur les ecran des ordinateurs." & @CRLF & _
@CRLF & _
"Lors du premier lancement le fichier de configuration est écrit et le chemin pour écrire le readme.txt " & _
"demandé. Il est important de noter que le le fichier readme.txt doit être écrit dans un lecteur réseau commun " & _
"aux deux applications." & @CRLF & _
@CRLF & _
"L'application permet à tout moment de supprimer ce fichier, lorsqu'il n'existe pas, INFO-PAF-CIC reste silencieux. " & _
"Seul une modification du message va reveiller le logiciel INFO-PAF-CIC" & @CRLF
local $hSplash = SplashTextOn("MESSAGE-INFO-CIC-" & $version, '', $larg, $haut, $PosW, $PosH, 0 + 16, '', 11, 700)
ControlSetText($hSplash, '', 'Static1', $helptext)
WinSetState($hSplash, '', @SW_SHOW)
sleep(20000)
WinSetState($hSplash, '', @SW_HIDE)
EndFunc
#AutoIt3Wrapper_Outfile=MESSAGE-INFO-CIC.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <file.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiRichEdit.au3>
$version="version 1.0"
$textoffile=""
$textforwrite=""
$sfile = @TempDir & "\readme.txt"
$fileconfig = @ScriptDir & "\confmessager.ini"
$Form1 = GUICreate("GENEREZ UN MESSAGE A AFFICHER", 603, 200, 154, 280)
$Button_cancel = GUICtrlCreateButton("Annuler", 396, 136, 97, 25)
$Button_ok = GUICtrlCreateButton("OK", 292, 136, 89, 25)
$Edit1=_GUICtrlRichEdit_Create($Form1,"", 16, 32, 481, 97,BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
;$Edit1 = GUICtrlCreateEdit("", 16, 32, 481, 97)
$Label1 = GUICtrlCreateLabel("Entrez ici le texte du message à faire afficher dans les Aubettes", 16, 8, 301, 17)
$Button_suppr = GUICtrlCreateButton("Supprimer fichier", 504, 30, 89, 41)
$Button_suppr_text = GUICtrlCreateButton("Supprimer texte", 504, 80, 89, 41)
$MenuItem1 = GUICtrlCreateMenu("&Menu")
$menuitem3 = GUICtrlCreateMenu("&Aide")
$idFileItem1 = GUICtrlCreateMenuItem("&Configuration", $MenuItem1)
$idFileItem2 = GUICtrlCreateMenuItem("&Supprimer le texte", $MenuItem1)
$idFileItem3 = GUICtrlCreateMenuItem("S&upprimer readme.txt", $MenuItem1)
$aideitem=GUICtrlCreateMenuItem("A propos",$menuitem3)
$helpitem=GUICtrlCreateMenuItem("Aide",$menuitem3)
$fileconfig=@ScriptDir & "\confmessager.ini"
$recherche_fileconfig= FileFindFirstFile($fileconfig)
if $recherche_fileconfig = -1 Then
$RechercherFichier = FileSelectFolder("Application non configurée, veuillez indiquer le repertoire pour le fichier Readme.txt", @WindowsDir)
If @error Then
MsgBox(0,"MESSAGE-INFO-CIC Erreur !", "Sans ce fichier readme.txt je ne sers a rien !" & @CRLF & "Je quitte...")
_exit_app()
Else
ConsoleWrite("le fichier existe")
IniWriteSection($fileconfig, "config", "chemin=" & $RechercherFichier & "readme.txt")
if @error then
msgbox(64,"MESSAGE-INFO-CIC","Erreur, je n'ai pas pu ecrire le fichier")
Else
msgbox(64,"MESSAGE-INFO-CIC","Le fichier de configuration a été ecrit avec succès" & @crlf & "le chemin est : " & IniRead($fileconfig, "config", "chemin", "Erreur") & @CRLF & "n'oubliez pas de coper ce fichier de configuration" & @CRLF & "avec le logiciel INFO-PAF")
EndIf
Global $sfile = IniRead($fileconfig, "config", "chemin", "Erreur")
EndIf
Else
Global $sfile = IniRead($fileconfig, "config", "chemin", "Erreur")
EndIf
if FileExists($sfile) Then ; gestion du fichier readme.txt
$fileopen = FileOpen($sfile)
$textoffile=FileRead($sfile)
_GUICtrlRichEdit_AppendText($Edit1, $textoffile & _dateheure & @CRLF) ; la preference pour cette fonction est simple, elle permet de faire un ctrl + a dans l'edit
FileClose($fileopen)
else
_GUICtrlRichEdit_AppendText($Edit1, _dateheure() & @CRLF) ; permet d'horodater le message
EndIf
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Button_cancel
_exit_app() ; on ne peut pas mettre un exit directement rich text edit demande a ce que la gui soit supprimée avant sinon crash
case $Button_ok
FileDelete($sfile) ; on efface l'ancien fichier
_FileCreate($sfile); pour le recreer
$text = _GUICtrlRichEdit_GetText($Edit1) ; recuperation du texte dans l'edit
$aText = StringRegExp($text, '(?m)^(.+|\s+)$', 3) ; et copie dans un buffer des caractères
For $i = 0 To UBound($aText) - 1
$textforwrite = $aText[$i]
FileWriteLine($sfile, $textforwrite & @crlf) ; pour les envoyer dans le fichier readme.txt
Next
Exit
Case $Button_suppr, $idFileItem3 ; gestion du bouton supprimer fichier et du menu supprimer
FileClose($sfile)
FileDelete($sfile)
msgbox(64,"MESSAGE-INFO-CIC","Fichier supprimé !")
_exit_app()
case $idFileItem1 ; gestion de la configuration de l'ini
_Configfichier()
case $idFileItem2, $Button_suppr_text ; gestion de la suppression du texte; si on ne veux pas supprimer le fichier.
_GUICtrlRichEdit_AppendText($Edit1," ")
send("{LCTRL}^{a}") ;CTRL + A
send("{DEL}") ;DEL
_GUICtrlRichEdit_AppendText($Edit1, _dateheure() & @CRLF)
Case $aideitem
MsgBox(0,"MESSAGE-INFO-CIC","Concept & devellopement" & @CRLF & "Marc GRAZIANI", 10)
Case $helpitem
_splashtext_aide()
EndSwitch
WEnd
Func _Configfichier()
$msg = MsgBox(4, "MESSAGE-INFO-CIC", "le fichier de configuration indique :" & @CRLF & IniRead($fileconfig, "config", "chemin", "non configuré") & @CRLF & @CRLF & "Voulez vous le changer ?")
If $msg = 6 Then
$RechercherFichier = FileSelectFolder("Veuillez indiquer le repertoire pour le fichier Readme.txt", @WindowsDir)
IniWriteSection($fileconfig, "config", "chemin=" & $RechercherFichier & "readme.txt")
if @error then
msgbox(64,"MESSAGE-INFO-CIC","Erreur, je n'ai pas pu ecrire le fichier")
Else
msgbox(64,"MESSAGE-INFO-CIC","Le fichier de configuration a été ecrit avec succès" & @crlf & "le chemin est : " & $RechercherFichier & "\readme.txt" & @CRLF & "n'oubliez pas de copier ce fichier de configuration" & @CRLF & "Sur les postes en aubette")
EndIf
$sfile = IniRead($fileconfig, "config", "chemin", "Non configuré")
Else
Return
EndIf
EndFunc ;==>_Configfichier
Func _exit_app()
_GUICtrlRichEdit_Destroy($Edit1)
exit
EndFunc
Func _dateheure()
$date="Le " & @MDAY & "/" & @MON & "/" & @YEAR & " à " & @HOUR & ":" & @MIN & ":" & @SEC & " Venant de " & @UserName
return $date
EndFunc
func _splashtext_aide()
local $larg = 600, $haut = 400
Local $PosW = @DesktopWidth / 2 - $larg, $PosH = @DesktopHeight / 2 - $haut - 65 ; Global $PosW = @DesktopWidth - $larg, $PosH = @DesktopHeight - $haut - 65 ; en bas a droite
;Global Const $PosW = 1, $PosH = @DesktopHeight - $haut - 50 ; en bas a gauche
local $helptext = @CRLF & _
"Ce logiciel à été pensé pour permettre au personnel travaillant en aubette" & @CRLF & _
"d'être informé en temps réel de l'arrivée d'une fiche dans les locaux de la CIC " & _
"l'opérateur CIC écrit son message et en cliquant sur ok, un fichier commun aux deux " & _
"applications nommé ""readme.txt"" sera ecrit puis lu par l'application INFO-PAF-CIC " & _
"qui l'affichera sur les ecran des ordinateurs." & @CRLF & _
@CRLF & _
"Lors du premier lancement le fichier de configuration est écrit et le chemin pour écrire le readme.txt " & _
"demandé. Il est important de noter que le le fichier readme.txt doit être écrit dans un lecteur réseau commun " & _
"aux deux applications." & @CRLF & _
@CRLF & _
"L'application permet à tout moment de supprimer ce fichier, lorsqu'il n'existe pas, INFO-PAF-CIC reste silencieux. " & _
"Seul une modification du message va reveiller le logiciel INFO-PAF-CIC" & @CRLF
local $hSplash = SplashTextOn("MESSAGE-INFO-CIC-" & $version, '', $larg, $haut, $PosW, $PosH, 0 + 16, '', 11, 700)
ControlSetText($hSplash, '', 'Static1', $helptext)
WinSetState($hSplash, '', @SW_SHOW)
sleep(20000)
WinSetState($hSplash, '', @SW_HIDE)
EndFunc
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=INFO-PAF-CIC.exe
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <Misc.au3>
#include <TrayConstants.au3>
$fileconfig = @ScriptDir & "\confmessager.ini"
Global $findfile = FileFindFirstFile($fileconfig)
If $findfile = -1 Then
IniWriteSection($fileconfig, "config", "chemin=Non configuré")
Global $sfile = "vide"
Else
Global $sfile = IniRead($fileconfig, "config", "chemin", "Non configuré")
EndIf
Global $filenew = False, $filetime = "", $connected = ""
Opt("TrayMenuMode", 3) ; The default tray menu items will not be shown and items are not checked when selected. These are options 1 and 2 for TrayMenuMode.
Opt("TrayOnEventMode", 1)
Global $larg = 400, $haut = 200
Global $PosW = @DesktopWidth / 2 - $larg, $PosH = @DesktopHeight / 2 - $haut - 65 ; Global $PosW = @DesktopWidth - $larg, $PosH = @DesktopHeight - $haut - 65 ; en bas a droite
;Global Const $PosW = 1, $PosH = @DesktopHeight - $haut - 50 ; en bas a gauche
Global $hSplash = SplashTextOn("-INFO-PAF-CIC- INFORMATIONS IMPORTANTES ", '', $larg, $haut, $PosW, $PosH, 4 + 16, '', 11, 700)
WinSetState($hSplash, '', @SW_HIDE)
Tray()
While 1
_main()
WEnd
Func _main()
If _testfile() = True Then
;ConsoleWrite("le fichier existe ! " & @CRLF)
_readfile()
$local_filetime = _file_time_compare()
If $local_filetime = True And FileGetSize($sfile) > 0 Then
For $i = 1 To 3
ControlSetText($hSplash, '', 'Static1', $connected)
WinSetState($hSplash, '', @SW_SHOW)
Sleep(100)
WinSetState($hSplash, '', @SW_HIDE)
Sleep(100)
Next
WinSetState($hSplash, '', @SW_SHOW)
Sleep(15000)
WinSetState($hSplash, '', @SW_HIDE)
TraySetState($TRAY_ICONSTATE_STOPFLASH)
$count = 1
Else
;ConsoleWrite("$filetime est false " & @CRLF)
Sleep(1000)
EndIf
Else
;ConsoleWrite("$file dont exist " & @CRLF)
;ControlSetText($hSplash, '', 'Static1', "")
;WinSetState($hSplash, '', @SW_HIDE)
;TraySetState($TRAY_ICONSTATE_STOPFLASH)
Sleep(1000)
_testfile()
EndIf
EndFunc ;==>_main
Func _file_time_compare()
Local $lookfiletime = FileGetTime($sfile, 0, 1)
If $lookfiletime <> $filetime Then
;ConsoleWrite("ancien : " & $filetime & " nouveau : " & $lookfiletime & @CRLF)
$filenew = True
$filetime = $lookfiletime
;ConsoleWrite("nouveau $filetime est : " & $filetime & @CRLF)
Return $filenew
EndIf
EndFunc ;==>_file_time_compare
Func Tray()
TraySetClick(8) ;8 = Pressing secondary mouse button mouseclicks will display the tray menu
TrayCreateItem("About")
TrayItemSetOnEvent(-1, "About")
TrayCreateItem("")
TrayCreateItem("Config")
TrayItemSetOnEvent(-1, "_configfichier")
TraySetIcon("shell32.dll", 24)
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "TrayEvent")
TraySetState($TRAY_ICONSTATE_FLASH)
EndFunc ;==>Tray
Func about()
MsgBox(64, "-INFO-PAF-CIC-", "Concept & developpement" & @CRLF & "Marc GRAZIANI", 5)
EndFunc ;==>about
Func _Configfichier()
$msg = MsgBox(4, "messager", "le fichier de configuration indique :" & @CRLF & IniRead($fileconfig, "config", "chemin", "non configuré") & @CRLF & @CRLF & "Voulez vous le changer ?")
If $msg = 6 Then
$RechercherFichier = FileSelectFolder("Veuillez indiquer le repertoire pour le fichier Readme.txt", @WindowsDir)
IniWriteSection($fileconfig, "config", "chemin=" & $RechercherFichier & "readme.txt")
If @error Then
MsgBox(64, "messager", "Erreur, je n'ai pas pu ecrire le fichier")
Else
MsgBox(64, "messager", "Le fichier de configuration a été ecrit avec succès" & @CRLF & "le chemin est : " & IniRead($fileconfig, "config", "chemin", "Non configuré") & @CRLF & "n'oubliez pas de copier ce fichier de configuration" & @CRLF & "Sur les postes en aubette")
EndIf
$sfile = IniRead($fileconfig, "config", "chemin", "Non configuré")
Else
Return
EndIf
EndFunc ;==>_Configfichier
Func TrayEvent()
;cw('TrayEvent'&@TAB&@TRAY_ID)
Switch @TRAY_ID
Case $TRAY_EVENT_PRIMARYDOWN
$iState = WinGetState($hSplash, '')
;cw('WinGetState'&@TAB&$iState)
Switch BitAND($iState, 2)
Case False
WinSetState($hSplash, '', @SW_SHOW)
TraySetState($TRAY_ICONSTATE_STOPFLASH)
Case True
WinSetState($hSplash, '', @SW_HIDE)
TraySetState($TRAY_ICONSTATE_FLASH)
EndSwitch
EndSwitch
EndFunc ;==>TrayEvent
Func _testfile()
$testfile = FileFindFirstFile($sfile)
If $testfile = -1 Then
;ConsoleWrite("$file dont exist " & @CRLF)
Return False
Else
;ConsoleWrite("$file exist " & @CRLF)
Return True
EndIf
EndFunc ;==>_testfile
Func _readfile()
If $sfile = "vide" Or $findfile = -1 Then Return
$fileopen = FileOpen($sfile)
$connected = FileRead($sfile)
$fileclose = FileClose($fileopen)
If $fileclose = 0 Then ConsoleWrite("erreur de fermeture du fichier ! " & $sfile & @CRLF)
;ConsoleWrite($connected & @CRLF)
Return $connected
EndFunc ;==>_readfile
Func cw($text, $line = @ScriptLineNumber)
ConsoleWrite(StringFormat("%04d", $line) & @TAB & '|')
ConsoleWrite($text)
ConsoleWrite('|' & @LF)
EndFunc ;==>cw
#AutoIt3Wrapper_Outfile=INFO-PAF-CIC.exe
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <Misc.au3>
#include <TrayConstants.au3>
$fileconfig = @ScriptDir & "\confmessager.ini"
Global $findfile = FileFindFirstFile($fileconfig)
If $findfile = -1 Then
IniWriteSection($fileconfig, "config", "chemin=Non configuré")
Global $sfile = "vide"
Else
Global $sfile = IniRead($fileconfig, "config", "chemin", "Non configuré")
EndIf
Global $filenew = False, $filetime = "", $connected = ""
Opt("TrayMenuMode", 3) ; The default tray menu items will not be shown and items are not checked when selected. These are options 1 and 2 for TrayMenuMode.
Opt("TrayOnEventMode", 1)
Global $larg = 400, $haut = 200
Global $PosW = @DesktopWidth / 2 - $larg, $PosH = @DesktopHeight / 2 - $haut - 65 ; Global $PosW = @DesktopWidth - $larg, $PosH = @DesktopHeight - $haut - 65 ; en bas a droite
;Global Const $PosW = 1, $PosH = @DesktopHeight - $haut - 50 ; en bas a gauche
Global $hSplash = SplashTextOn("-INFO-PAF-CIC- INFORMATIONS IMPORTANTES ", '', $larg, $haut, $PosW, $PosH, 4 + 16, '', 11, 700)
WinSetState($hSplash, '', @SW_HIDE)
Tray()
While 1
_main()
WEnd
Func _main()
If _testfile() = True Then
;ConsoleWrite("le fichier existe ! " & @CRLF)
_readfile()
$local_filetime = _file_time_compare()
If $local_filetime = True And FileGetSize($sfile) > 0 Then
For $i = 1 To 3
ControlSetText($hSplash, '', 'Static1', $connected)
WinSetState($hSplash, '', @SW_SHOW)
Sleep(100)
WinSetState($hSplash, '', @SW_HIDE)
Sleep(100)
Next
WinSetState($hSplash, '', @SW_SHOW)
Sleep(15000)
WinSetState($hSplash, '', @SW_HIDE)
TraySetState($TRAY_ICONSTATE_STOPFLASH)
$count = 1
Else
;ConsoleWrite("$filetime est false " & @CRLF)
Sleep(1000)
EndIf
Else
;ConsoleWrite("$file dont exist " & @CRLF)
;ControlSetText($hSplash, '', 'Static1', "")
;WinSetState($hSplash, '', @SW_HIDE)
;TraySetState($TRAY_ICONSTATE_STOPFLASH)
Sleep(1000)
_testfile()
EndIf
EndFunc ;==>_main
Func _file_time_compare()
Local $lookfiletime = FileGetTime($sfile, 0, 1)
If $lookfiletime <> $filetime Then
;ConsoleWrite("ancien : " & $filetime & " nouveau : " & $lookfiletime & @CRLF)
$filenew = True
$filetime = $lookfiletime
;ConsoleWrite("nouveau $filetime est : " & $filetime & @CRLF)
Return $filenew
EndIf
EndFunc ;==>_file_time_compare
Func Tray()
TraySetClick(8) ;8 = Pressing secondary mouse button mouseclicks will display the tray menu
TrayCreateItem("About")
TrayItemSetOnEvent(-1, "About")
TrayCreateItem("")
TrayCreateItem("Config")
TrayItemSetOnEvent(-1, "_configfichier")
TraySetIcon("shell32.dll", 24)
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "TrayEvent")
TraySetState($TRAY_ICONSTATE_FLASH)
EndFunc ;==>Tray
Func about()
MsgBox(64, "-INFO-PAF-CIC-", "Concept & developpement" & @CRLF & "Marc GRAZIANI", 5)
EndFunc ;==>about
Func _Configfichier()
$msg = MsgBox(4, "messager", "le fichier de configuration indique :" & @CRLF & IniRead($fileconfig, "config", "chemin", "non configuré") & @CRLF & @CRLF & "Voulez vous le changer ?")
If $msg = 6 Then
$RechercherFichier = FileSelectFolder("Veuillez indiquer le repertoire pour le fichier Readme.txt", @WindowsDir)
IniWriteSection($fileconfig, "config", "chemin=" & $RechercherFichier & "readme.txt")
If @error Then
MsgBox(64, "messager", "Erreur, je n'ai pas pu ecrire le fichier")
Else
MsgBox(64, "messager", "Le fichier de configuration a été ecrit avec succès" & @CRLF & "le chemin est : " & IniRead($fileconfig, "config", "chemin", "Non configuré") & @CRLF & "n'oubliez pas de copier ce fichier de configuration" & @CRLF & "Sur les postes en aubette")
EndIf
$sfile = IniRead($fileconfig, "config", "chemin", "Non configuré")
Else
Return
EndIf
EndFunc ;==>_Configfichier
Func TrayEvent()
;cw('TrayEvent'&@TAB&@TRAY_ID)
Switch @TRAY_ID
Case $TRAY_EVENT_PRIMARYDOWN
$iState = WinGetState($hSplash, '')
;cw('WinGetState'&@TAB&$iState)
Switch BitAND($iState, 2)
Case False
WinSetState($hSplash, '', @SW_SHOW)
TraySetState($TRAY_ICONSTATE_STOPFLASH)
Case True
WinSetState($hSplash, '', @SW_HIDE)
TraySetState($TRAY_ICONSTATE_FLASH)
EndSwitch
EndSwitch
EndFunc ;==>TrayEvent
Func _testfile()
$testfile = FileFindFirstFile($sfile)
If $testfile = -1 Then
;ConsoleWrite("$file dont exist " & @CRLF)
Return False
Else
;ConsoleWrite("$file exist " & @CRLF)
Return True
EndIf
EndFunc ;==>_testfile
Func _readfile()
If $sfile = "vide" Or $findfile = -1 Then Return
$fileopen = FileOpen($sfile)
$connected = FileRead($sfile)
$fileclose = FileClose($fileopen)
If $fileclose = 0 Then ConsoleWrite("erreur de fermeture du fichier ! " & $sfile & @CRLF)
;ConsoleWrite($connected & @CRLF)
Return $connected
EndFunc ;==>_readfile
Func cw($text, $line = @ScriptLineNumber)
ConsoleWrite(StringFormat("%04d", $line) & @TAB & '|')
ConsoleWrite($text)
ConsoleWrite('|' & @LF)
EndFunc ;==>cw