Traymenu survol et clic droit
Posté : jeu. 23 juin 2016 23:26
Bonsoir,
J'ai réussi à trouver toutes les fonctions que je veux pour mon traymenu, mais je bloque sur 1 point.
En cherchant sur le forum j'ai trouvé le code de mikell qui correspond a ce que je veux avec une différence:
code de mikell:
1 menu sur clic droit
1 menu sur clic gauche
Moi j'aimerai:
1 menu au survol de l’icône
1 menu au clic droit
le code de mikell que j'ai trouver c'est:
[codeautoit]#include <constants.au3>
#include <Misc.au3>
Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)
TraySetClick(18)
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "SpecialEvent")
TraySetOnEvent($TRAY_EVENT_SECONDARYDOWN, "SpecialEvent")
TraySetState()
Global $exit, $Item1, $Item2
While 1
Sleep(10)
WEnd
Func SpecialEvent()
Select
Case @TRAY_ID = $TRAY_EVENT_PRIMARYDOWN
Delete()
$exit = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "_Exit")
Case @TRAY_ID = $TRAY_EVENT_SECONDARYDOWN
Delete()
$Item1 = TrayCreateItem("Item 1")
TrayItemSetOnEvent(-1, "_Tray1")
$Item2 = TrayCreateItem("Item 2")
TrayItemSetOnEvent(-1, "_Tray2")
$exit = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "_Exit")
EndSelect
EndFunc
Func Delete()
TrayItemDelete ($exit)
TrayItemDelete ($Item1)
TrayItemDelete ($Item2)
EndFunc
Func _Tray1()
MsgBox(0, "", "tray1")
EndFunc
Func _Tray2()
MsgBox(0, "", "tray2")
EndFunc
Func _Exit()
Exit
EndFunc[/codeautoit]
Le code que j'ai fais grâce a la doc:
[codeautoit]#NoTrayIcon
#include <MsgBoxConstants.au3>
#include <TrayConstants.au3> ; Nécessaire pour les constantes $TRAY_EVENT_PRIMARYDOUBLE, $TRAY_EVENT_SECONDARYUP et $TRAY_ICONSTATE_SHOW.
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Opt("TrayMenuMode", 3) ; Les items du menu, par défaut, ne seront pas affichés et les items ne seront pas cochés lorsqu'ils seront sélectionnés. Ce sont les options 1 et 2 de TrayMenuMode.
Opt("TrayOnEventMode", 1) ; Active TrayOnEventMode.
Example()
Func Example()
Menu()
;TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "TrayEvent")
TraySetOnEvent($TRAY_EVENT_SECONDARYUP, "TrayEvent")
TraySetState($TRAY_ICONSTATE_SHOW) ; Affiche le menu de la zone de
TraySetClick(64) ; Ouvre le menu au survole de l'icone du traymenu
While 1
Sleep(100) ; Une boucle d'inactivité.
WEnd
EndFunc ;==> Example
Func TrayEvent()
Switch @TRAY_ID ; Teste le dernier identifiant de l'item.
Case $TRAY_EVENT_PRIMARYUP
; Affiche une boîte de message à propos de la version et du chemin d'installation de l'exécutable AutoIt.
;MsgBox($MB_SYSTEMMODAL, "", "AutoIt tray menu example.") ; Trouve le dossier d'un chemin d'accès complet.
Case $TRAY_EVENT_SECONDARYUP
;MsgBox($MB_SYSTEMMODAL, "", "The secondary mouse button was released on the tray icon.")
Config()
EndSwitch
EndFunc ;==> TrayEvent
Func Menu()
TrayCreateItem("Menu1")
TrayCreateItem("Menu2")
TrayCreateItem("Menu3")
EndFunc
Func Config()
TrayCreateItem("Configuration2")
TrayCreateItem("") ; Crée une ligne de séparation.
TrayCreateItem("About2")
TrayCreateItem("") ; Crée une ligne de séparation.
TrayCreateItem("Exit2")
TrayItemSetOnEvent(-1, "ExitScript")
EndFunc
Func ExitScript()
Exit
EndFunc ;==> ExitScript[/codeautoit]
J'ai comme l'impression qu'il y a confit a faire coabiter c'est deux etats, non?
J'ai réussi à trouver toutes les fonctions que je veux pour mon traymenu, mais je bloque sur 1 point.
En cherchant sur le forum j'ai trouvé le code de mikell qui correspond a ce que je veux avec une différence:
code de mikell:
1 menu sur clic droit
1 menu sur clic gauche
Moi j'aimerai:
1 menu au survol de l’icône
1 menu au clic droit
le code de mikell que j'ai trouver c'est:
[codeautoit]#include <constants.au3>
#include <Misc.au3>
Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)
TraySetClick(18)
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "SpecialEvent")
TraySetOnEvent($TRAY_EVENT_SECONDARYDOWN, "SpecialEvent")
TraySetState()
Global $exit, $Item1, $Item2
While 1
Sleep(10)
WEnd
Func SpecialEvent()
Select
Case @TRAY_ID = $TRAY_EVENT_PRIMARYDOWN
Delete()
$exit = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "_Exit")
Case @TRAY_ID = $TRAY_EVENT_SECONDARYDOWN
Delete()
$Item1 = TrayCreateItem("Item 1")
TrayItemSetOnEvent(-1, "_Tray1")
$Item2 = TrayCreateItem("Item 2")
TrayItemSetOnEvent(-1, "_Tray2")
$exit = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "_Exit")
EndSelect
EndFunc
Func Delete()
TrayItemDelete ($exit)
TrayItemDelete ($Item1)
TrayItemDelete ($Item2)
EndFunc
Func _Tray1()
MsgBox(0, "", "tray1")
EndFunc
Func _Tray2()
MsgBox(0, "", "tray2")
EndFunc
Func _Exit()
Exit
EndFunc[/codeautoit]
Le code que j'ai fais grâce a la doc:
[codeautoit]#NoTrayIcon
#include <MsgBoxConstants.au3>
#include <TrayConstants.au3> ; Nécessaire pour les constantes $TRAY_EVENT_PRIMARYDOUBLE, $TRAY_EVENT_SECONDARYUP et $TRAY_ICONSTATE_SHOW.
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Opt("TrayMenuMode", 3) ; Les items du menu, par défaut, ne seront pas affichés et les items ne seront pas cochés lorsqu'ils seront sélectionnés. Ce sont les options 1 et 2 de TrayMenuMode.
Opt("TrayOnEventMode", 1) ; Active TrayOnEventMode.
Example()
Func Example()
Menu()
;TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "TrayEvent")
TraySetOnEvent($TRAY_EVENT_SECONDARYUP, "TrayEvent")
TraySetState($TRAY_ICONSTATE_SHOW) ; Affiche le menu de la zone de
TraySetClick(64) ; Ouvre le menu au survole de l'icone du traymenu
While 1
Sleep(100) ; Une boucle d'inactivité.
WEnd
EndFunc ;==> Example
Func TrayEvent()
Switch @TRAY_ID ; Teste le dernier identifiant de l'item.
Case $TRAY_EVENT_PRIMARYUP
; Affiche une boîte de message à propos de la version et du chemin d'installation de l'exécutable AutoIt.
;MsgBox($MB_SYSTEMMODAL, "", "AutoIt tray menu example.") ; Trouve le dossier d'un chemin d'accès complet.
Case $TRAY_EVENT_SECONDARYUP
;MsgBox($MB_SYSTEMMODAL, "", "The secondary mouse button was released on the tray icon.")
Config()
EndSwitch
EndFunc ;==> TrayEvent
Func Menu()
TrayCreateItem("Menu1")
TrayCreateItem("Menu2")
TrayCreateItem("Menu3")
EndFunc
Func Config()
TrayCreateItem("Configuration2")
TrayCreateItem("") ; Crée une ligne de séparation.
TrayCreateItem("About2")
TrayCreateItem("") ; Crée une ligne de séparation.
TrayCreateItem("Exit2")
TrayItemSetOnEvent(-1, "ExitScript")
EndFunc
Func ExitScript()
Exit
EndFunc ;==> ExitScript[/codeautoit]
J'ai comme l'impression qu'il y a confit a faire coabiter c'est deux etats, non?