J'essaye de faire un menu dans le system tray. J'arrive à afficher mes commandes sans trop de difficulté, mais j'aimerai agrémenter ce menu de quelques icônes devant les commandes.
► Afficher le texteMon code est ici
Code : Tout sélectionner
;Création d'un menu reprenant les raccourcis poussés par logon_script
#Include <Constants.au3>
#NoTrayIcon
Opt("ExpandEnvStrings", 1)
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 3) ; On masque srcipt paused et on ne coche pas les cmds cliquées.
Opt("TrayautoPause", 0)
; Variable globale de stockage des commandes
Global $commands = ObjCreate("Scripting.Dictionary")
Local $MonDir = @ProgramFilesDir & "\bar\"
local $title = "La boîte à raccourcis SUMI"
; Le fichier spécifié n'existe pas
If Not FileExists($MonDir) Then Exit(2)
; Recherches tous les fichiers dans SUMI
$search = FileFindFirstFile($MonDir & "\*.*")
; S'il existe au moins un fichier
If $search = -1 Then
MsgBox(0, "Error", "No files/directories matched the search pattern")
Exit
EndIf
; définition de la liste à afficher
$files = "Les fichiers présent dans " & $MonDir & " sont :"& @CRLF
; Définition de l'icône
TraySetIcon(@ProgramFilesDir & "\bibli_ico.icl",13)
; Définition d'une info-bulle pour la boite à raccourcis SUMI
TrayTip("la boite à raccourcis SUMI", "Votre boite à raccourcis est désormais"&@LF&"disponible également à côté de l'horloge !", 5, 1)
; Affichage de l'icône (et du menu par la même occasion)
TraySetState()
; Personnalisation du tooltip
TraySetToolTip($title)
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
; Construction du menu
buildMenu($MonDir, $file)
$files = $files & $file & @CRLF
WEnd
; Close the search handle
FileClose($search)
; Création du séparateur final (avant la commande "Quitter"
TrayCreateItem("")
; Création d'un item A propos
$aboutItem = TrayCreateItem("A propos")
TrayItemSetOnEvent(-1,"about")
; Création de l'élément "Quitter" qui sera toujours présent
; quelque soit le fichier XML et ce qu'il contient
$ExitItem = TrayCreateItem("Quitter")
TrayItemSetOnEvent(-1, "ExitScript")
; Entrée dans la boucle principale de l'application
; (attente d'une action sur le menu
While 1
Sleep(10)
WEnd
; Construction récursive du menu
Func buildMenu( $doss, $fich , $parent = -1 )
$pos = StringSplit($fich,".")
$caption = $pos[1]
$id = TrayCreateItem($caption, $parent)
$cmd = $doss & "\" & $fich
If $cmd <> "" Then
$commands.Add($id, $cmd)
TrayItemSetOnEvent(-1, "RunCmd")
EndIf
EndFunc
; Exécute la commande associé à un élément de menu
Func RunCmd()
; Execution de la commande associé à l'élément @TRAY_ID qui est
; l'identifiant de l'élément de menu et qui sert d'identifiant
; pour la commande associée
Local $cmd = $commands.Item(@TRAY_ID)
ShellExecute($cmd)
EndFunc
; about
Func about()
Msgbox(0,"A propos","Ici mes info à propos")
EndFunc
; Quitte l'application
Func ExitScript()
Exit(0)
EndFunc


