Page 1 sur 1
[R] Problème TraySetOnEvent
Posté : dim. 23 nov. 2008 11:15
par arrkhan
Bonjour a tous,
je viens de constater un petit probleme sur TraySetOnEvent, qui n'a l'air de pas correctement fonctionner.
si l'on exécute le script de l'aide ci dessous :
► Afficher le texte
Code : Tout sélectionner
#include <Constants.au3>
#NoTrayIcon
Opt("TrayOnEventMode",1)
Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.
$exit = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1,"ExitEvent")
TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE,"SpecialEvent")
TraySetOnEvent($TRAY_EVENT_SECONDARYUP,"SpecialEvent")
TraySetState()
While 1
Sleep(10) ; Idle loop
WEnd
Exit
; Functions
Func SpecialEvent()
Select
Case @TRAY_ID = $TRAY_EVENT_PRIMARYDOUBLE
Msgbox(64,"SpecialEvent-Info","Primary mouse button double clicked.")
Case @TRAY_ID = $TRAY_EVENT_SECONDARYUP
Msgbox(64,"SpecialEvent-Info","Secondary mouse button clicked.")
EndSelect
EndFunc
Func ExitEvent()
Exit
EndFunc
les TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE,"SpecialEvent") et
TraySetOnEvent($TRAY_EVENT_SECONDARYUP,"SpecialEvent") ne fonctionnent pas et la seule possiblité et de fermer le script.
en modifiant quelques peu le script exemple:
► Afficher le texte
Code : Tout sélectionner
#include <Constants.au3>
#NoTrayIcon
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 1) ; Default tray menu items (Script Paused/Exit) will not be shown.
TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE, "SpecialEvent")
TraySetOnEvent($TRAY_EVENT_SECONDARYUP, "SpecialEvent")
TraySetState()
While 1
Sleep(10) ; Idle loop
WEnd
Exit
; Functions
Func SpecialEvent()
Select
Case @TRAY_ID = $TRAY_EVENT_PRIMARYDOUBLE
MsgBox(64, "SpecialEvent-Info", "Primary mouse button double clicked.")
Case @TRAY_ID = $TRAY_EVENT_SECONDARYUP
$exit = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "ExitEvent")
EndSelect
EndFunc ;==>SpecialEvent
Func ExitEvent()
Exit
EndFunc ;==>ExitEvent
on peut a présent double-cliquer gauche pour avoir la message box, mais des que l'on clique droit c'est fini, le double clique gauche ne fonctionne plus.
ce script la ne fonctionne pas non plus :
► Afficher le texte
Code : Tout sélectionner
#include <Constants.au3>
#NoTrayIcon
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 1) ; Default tray menu items (Script Paused/Exit) will not be shown.
TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE, "SpecialEvent")
TraySetOnEvent($TRAY_EVENT_SECONDARYUP, "SpecialEvent2")
TraySetState()
While 1
Sleep(10) ; Idle loop
WEnd
Exit
; Functions
Func SpecialEvent()
MsgBox(64, "SpecialEvent-Info", "Primary mouse button double clicked.")
EndFunc ;==>SpecialEvent
Func SpecialEvent2()
$exit = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "ExitEvent")
EndFunc ;==>SpecialEvent2
Func ExitEvent()
Exit
EndFunc ;==>ExitEvent
avec les mêmes effets que le précédent.
Question: le problème vient il de chez moi, ou vous l'avez aussi, et comment le résoudre ?
Re: [..] Problème TraySetOnEvent
Posté : dim. 23 nov. 2008 11:43
par Tlem
Quel est l'intérêt du double clic puisque tu as crée un menu ?
En effet, si tu utilise l'icône du systray pour une action spécifique et que celui-ci ne contient aucun menu, alors dans ce cas je vois bien l'intérêt de gérer le double clic droit ou gauche.
Mais si tu as un menu sur cet élément, ou est donc l'intérêt de gérer une action par double clic alors que tu peut mettre ta fonction dans le menu ?

Re: [..] Problème TraySetOnEvent
Posté : dim. 23 nov. 2008 12:39
par arrkhan
c'est juste que les exemples de l'aide ne fonctionnent pas
dommage, j'aimais bien le début de mon script
► Afficher le texte
Code : Tout sélectionner
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#NoTrayIcon
Opt("TrayIconHide", 1)
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 1)
Opt("GUIOnEventMode", 1)
$APPTitle = "Mon appli"
GUICreate($APPTitle, 200, 350, -1, -1, $WS_SYSMENU, $WS_EX_TOPMOST)
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "_GuiShow")
TraySetOnEvent($TRAY_EVENT_SECONDARYUP, "_TrayMenu")
TraySetState()
GUISetOnEvent($GUI_EVENT_CLOSE, "_Gui2Systray")
_Gui2Systray()
While 1
Sleep(0x7fff)
WEnd
Func _Exit()
Exit
EndFunc ;==>_Exit
Func _GuiShow()
GUISetState(@SW_SHOW)
Opt("TrayIconHide", 1)
EndFunc ;==>_GuiShow
Func _Gui2Systray()
GUISetState(@SW_HIDE)
Opt("TrayIconHide", 0)
If @OSVersion = "WIN_NT4" Or @OSVersion = "WIN_ME" Or @OSVersion = "WIN_98" Or @OSVersion = "WIN_95" Then
TraySetToolTip("Cliquez l'icône pour accéder aux options.")
Else
TrayTip($APPTitle, "Cliquez l'icône pour accéder aux options.", 2, 1)
EndIf
EndFunc ;==>_Gui2Systray
Func _TrayMenu()
$TrayExit = TrayCreateItem("Quitter")
TrayItemSetOnEvent($TrayExit, "_Exit")
EndFunc ;==>_TrayMenu
Re: [..] Problème TraySetOnEvent
Posté : dim. 23 nov. 2008 12:54
par ani
Pour certain logiciel, le faite de double cliquer sur l'icone du systray fait apparaitre une interface.
voilàvoilà

Re: [..] Problème TraySetOnEvent
Posté : dim. 23 nov. 2008 14:09
par Tlem
@arrkhan
Quels exemples ne fonctionnent pas ?
@ani
Certes, mais dans ce cas tu n'a pas le menu contextuel sur clic droit ...
Ce qu'il faut retenir, c'est :
- Si pas de menu contextuel sur icône du systray, alors le double clic droit et gauche sont possible.
- Si menu contextuel, alors seul le clic gauche peut être activé (ce qui est un fonctionnement normal puisque le clic gauche doit faire apparaitre le menu ...).
Re: [..] Problème TraySetOnEvent
Posté : dim. 23 nov. 2008 14:48
par arrkhan
oui mais non, si on s en refere a l exemple de l aide; il est possible d'appliquer une fonction au clique gauche en gardant le menu avec le clique droit
Re: [..] Problème TraySetOnEvent
Posté : dim. 23 nov. 2008 14:59
par Tlem
A quel exemple fait-tu référence ?
Re: [..] Problème TraySetOnEvent
Posté : dim. 23 nov. 2008 15:49
par arrkhan
lol, je suis un incompri
je me cite
je viens de constater un petit probleme sur TraySetOnEvent, qui n'a l'air de pas correctement fonctionner.
si l'on exécute le script de l'aide ci dessous :
donc l'aide AutoIt concernant TraySetOnEvent
Re: [..] Problème TraySetOnEvent
Posté : dim. 23 nov. 2008 16:37
par ani
je t'avais bien lu moi

L'exemple fournis dans l'aide fonctionne parfaitement en tout cas chez moi.
Pour les autres exemples y a de petit bug

, à chaque clique secondary tu rajoute un élèment au traymenu
et pour résoudre le problème sur les autres exemples, faudrai que je replonge dans l'aide.
Re: [..] Problème TraySetOnEvent
Posté : dim. 23 nov. 2008 17:25
par Tlem
arrkhan a écrit :lol, je suis un incompri
Ben il faut s'expliquer alors ...
je te cite:
arrkhan a écrit :c'est juste que les exemples de l'aide ne fonctionnent pas
Donc lorsque l'on parle de plusieurs exemples, il est bien de préciser lequel ou lesquels.
Ensuite tu parle effectivement de l'exemple du
TraySetOnEvent, or celui-ci fonctionne parfaitement dans mon cas. Il me semble juste que tu confond certaines choses car dans l'exemple en question, il est fait état de
$TRAY_EVENT_SECONDARYUP et non
$TRAY_EVENT_SECONDARYDOUBLE pour la partie du clic droit, mais quoi qu'il en soit à partir du moment ou tu as un menu, le double clic droit ne peut produire une autre action que l'affichage du menu (A moins de faire des choses bien compliquées

).
Re: [..] Problème TraySetOnEvent
Posté : dim. 23 nov. 2008 22:37
par arrkhan
GNÉ !!!
Ou ai je parlé du $TRAY_EVENT_SECONDARYDOUBLE ? fatigué le tlem aujourd hui
bon si l'exemple de l'aide fonctionne chez vous c'est que le problème vient de chez moi
bonne soirée les gens et merci
Re: [..] Problème TraySetOnEvent
Posté : lun. 24 nov. 2008 00:39
par Tlem
WWhhhAAaaaOoUu ... Faut que j'arrête là !!!
Bon va falloir que je pense à me coucher quand même.
Faut que je dorme au lieu d'imaginer des tas de trucs ...
Bon allez pour me faire peut être pardonné, je confirme que l'exemple de l'aide ne fonctionne pas chez moi non plus (J'vais po compris kment ty v'lait ts'en servirrrr (accent Canadien

) ).
Je pense qu'ils ont oubliés de rajouter la commande
TraySetClick (32) juste avant la commande
TraySetState().

Re: [R] Problème TraySetOnEvent
Posté : lun. 24 nov. 2008 02:38
par ani
pourquoi chez moi çà fonctionne et pas vous?
Ca ne serait pas du au pack, je dispose encore du deux

le trois pas bon... non ?
Re: [R] Problème TraySetOnEvent
Posté : lun. 24 nov. 2008 09:36
par arrkhan
ptêt ben qu'oui, ptêt ben qu'non, ch'uis su'l 3 aussi (accent normand ^^)
bon petits essais la au taf, sous xp pro sp2, le code suivant fonctionne, en rajoutant le TraySetClick(16):
► Afficher le texte
Code : Tout sélectionner
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#NoTrayIcon
Opt("TrayIconHide", 1)
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 1)
Opt("GUIOnEventMode", 1)
$APPTitle = "Mon appli"
Dim $TrayExit
GUICreate($APPTitle, 200, 350, -1, -1, $WS_SYSMENU, $WS_EX_TOPMOST)
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "_GuiShow")
TraySetOnEvent($TRAY_EVENT_SECONDARYDOWN, "_TrayMenu")
TraySetClick(16)
TraySetState()
GUISetOnEvent($GUI_EVENT_CLOSE, "_Gui2Systray")
_Gui2Systray()
While 1
Sleep(0x7fff)
WEnd
Func _Exit()
Exit
EndFunc ;==>_Exit
Func _GuiShow()
GUISetState(@SW_SHOW)
Opt("TrayIconHide", 1)
EndFunc ;==>_GuiShow
Func _Gui2Systray()
GUISetState(@SW_HIDE)
Opt("TrayIconHide", 0)
If @OSVersion = "WIN_NT4" Or @OSVersion = "WIN_ME" Or @OSVersion = "WIN_98" Or @OSVersion = "WIN_95" Then
TraySetToolTip("Cliquez l'icône pour accéder aux options.")
Else
TrayTip($APPTitle, "Cliquez l'icône pour accéder aux options.", 2, 1)
EndIf
EndFunc ;==>_Gui2Systray
Func _TrayMenu()
TrayItemDelete($TrayExit)
$TrayExit = TrayCreateItem("Quitter")
TrayItemSetOnEvent($TrayExit, "_Exit")
EndFunc ;==>_TrayMenu
Et considérant que "un bug qui ne se voit pas ne me cause pas de souci"(philosophie microsoft ^^), j'ai ajouté un TrayItemDelete, pour supprimer les lignes en trop ^^ du clique droit (pas con jean-pierre), je trouverais une autre facon de faire plus tard, pour l instant ca me va, problèmes résolus