Page 1 sur 1

Traymenu survol et clic droit

Posté : jeu. 23 juin 2016 23:26
par marro
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?

Re: Traymenu survol et clic droit

Posté : ven. 24 juin 2016 00:15
par orax
Peut-être que quelqu'un aura une solution, mais, en fait, je me demande si c'est vraiment une bonne idée d'avoir le menu qui s'affiche lors du survol de la souris. Le problème, c'est que si la souris survole l'icône par le bas, alors le menu cache complètement l'icône, et, comme elle se retrouve masquée, on ne peut plus cliquer dessus.
Une autre solution serait de créer une mini GUI lors du survol de l'icône. Cette GUI s'afficherait près de la souris, mais sans masquer l'icône. Par contre, je n'ai jamais essayé de faire ça, donc je ne sais pas si l'idée est bonne.

Re: Traymenu survol et clic droit

Posté : ven. 24 juin 2016 14:13
par marro
Ah oui c'est une bonne idée, ça me plais bien.
Ça veux dire que lorsque je survol l’icône du traymenu j'appelle un autre fichier guiMonMenu.au3 que j'aurai crée avec l'application pour crée des interfaces graphique.
C'est bien ça?
Ça veux dire aussi que je peu utiliser le même principe pour le menu du clic droit?

Je vais chercher dans ce sens, merci pour ton aide orax ça m'aiguille bien, enfin si j'ai bien tous saisis ^^

Re: Traymenu survol et clic droit

Posté : ven. 24 juin 2016 16:29
par orax
Je pense que t'as compris ce que je voulais dire. Mon idée est de faire quelque chose comme le Centre de maintenance sur Windows. Quand on clique sur l'icône, une petite interface s'affiche au dessus de la barre des tâches. :arrow: http://www.aidewindows.net/win8/maintenance.php#acces

Re: Traymenu survol et clic droit

Posté : ven. 24 juin 2016 22:11
par marro
oui ok c'est bien ce que je pensais.
Je vais essayer de faire quelque chose et poste ici