Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

WDx Détecter le survol d'une icone du systray

8 réponses
Avatar
Georges Peyre
Bonjour,

Existe-t-il un moyen de détecter le survol d'une icone installée dans
le systray par SysIconeAjoute() pour pouvoir executer une procédure
quelconque ( sans cliquer sur l'icone )?

Lorsqu'on survole une icone du systray, une bulle affiche simplement le
texte qui en l'occurrence contient un compteur.
Moi je voudrais en plus pouvoir executer un bip simple si la valeur du
compteur est > à 0.
( Ma 1ere contrainte est que je veux pouvoir utiliser un programme
msdos qui s'appelle beep.exe et qui permet de produire un bip lorsque
les haut-parleurs sont éteints )

J'aurai voulu utiliser le composant BalloonTip : malheureusement le bip
sonore est un bip windows qui ne fonctionne pas si les haut-parleurs
sont éteints.

Donc je cherche à savoir si une api ou un evènement est utilisable au
simple survol de l'icone.

Cordialement



--
Elle est pas belle la vie ?

8 réponses

Avatar
Romain PETIT
Georges Peyre a exposé le 01/02/2006 :
Bonjour,



Bonjour,

Donc je cherche à savoir si une api ou un evènement est utilisable au simple
survol de l'icone.



Tu peux aisément faire ça avec ma classe cSystray :

http://www.windasso.org/cgi-bin/gesmod.exe?exec=VISU&NUMRUBRIQUE22&MDP=&TYPE=SOURCE

Tu ajoutes simplement :

**** Dans la déclaration de classe, au niveau des constantes :
[...]
WM_MOUSEMOVE = 0x0200 // Survol de l'icone

**** Dans la méthode TraiteEvenementIcone
[...]
//Vous pouvez définir d'autres évènements
CAS ::WM_MOUSEMOVE
Trace("Survol de l'icone dans le systray")
[...]

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Georges Peyre
Bonjour Romain

Après être passé de wd55 à 7.5 puis à wd10 j'ai été arreté par des
problèmes d'indirection sans pouvoir obtenir la fonction en cause.

J'ai abandonné et j'ai trouvé finalement une autre solution plus simple
en utilisant soit un simple click soit un double clic sur l'icone

Merci quand même

Cordialement

--
Elle est pas belle la vie ?
Avatar
Romain PETIT
Georges Peyre a présenté l'énoncé suivant :
Bonjour Romain

Après être passé de wd55 à 7.5 puis à wd10 j'ai été arreté par des problèmes
d'indirection sans pouvoir obtenir la fonction en cause.



Avec ma classe tu veux dire ?
Il faut prendre la version 7.5 (le lien en bas, en dehors de l'encadré
sur la page) !
(c'est vrai que le fait qu'il y ait une version 5.5 porte à confusion
sur la page windasso)

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Georges Peyre
Bonsoir Romain

Il faut prendre la version 7.5 (le lien en bas, en dehors de l'encadré sur la
page) !
(c'est vrai que le fait qu'il y ait une version 5.5 porte à confusion sur la
page windasso)





Effectivement c'est bien mieux : par contre il y a quand même un
problème avec l'execution du Beep qui se repète sans arret tant que je
déplace la souris sur l'icone.
WM_MOUSEMOVE ne convient pas

Il faudrait un évènement qui ne s'exécute qu'une seule fois en entrant
sur l'aire de l'icône avec la souris : je n'en ai pas trouvé

Cordialement


--
Elle est pas belle la vie ?
Avatar
Val
Bonjour


"Georges Peyre" a écrit dans le message de news:

Bonsoir Romain

Il faut prendre la version 7.5 (le lien en bas, en dehors de l'encadré
sur la page) !
(c'est vrai que le fait qu'il y ait une version 5.5 porte à confusion sur
la page windasso)





Effectivement c'est bien mieux : par contre il y a quand même un problème
avec l'execution du Beep qui se repète sans arret tant que je
déplace la souris sur l'icone.
WM_MOUSEMOVE ne convient pas

Il faudrait un évènement qui ne s'exécute qu'une seule fois en entrant
sur l'aire de l'icône avec la souris : je n'en ai pas trouvé

Cordialement


--
Elle est pas belle la vie ?





Je n'ai pas examiné le traitement sur lequel tu travailles mais,
éventuellement, essaye d'utiliser une variable (type booleen par exemple).
Ainsi, au début du traitement, tu déclares la variable comme étant égale à
FAUX.
Lorsque tu passes sur l'icône, tu vérifies la valeur de cette variable: si
elle est égale à FAUX alors tu génères le bip, puis tu la passes à VRAI.
Pas contre si elle est égale à VRAI, tu ne génères pas le bip.

En procédant ainsi, normalement, le bip devrait retentir 1 fois seulement.

Eventuellement, tu peux même déclarer cette variable comme étant un entier
et, à chaque bip, l'incrémenter de +1 de façon à, par exemple, ne plus
générer de bip au delà de 5.

A+

Val
Avatar
Georges Peyre
Bonjour

Val avait prétendu :
Lorsque tu passes sur l'icône, tu vérifies la valeur de cette variable: si
elle est égale à FAUX alors tu génères le bip, puis tu la passes à VRAI.
Pas contre si elle est égale à VRAI, tu ne génères pas le bip.

En procédant ainsi, normalement, le bip devrait retentir 1 fois seulement.

Eventuellement, tu peux même déclarer cette variable comme étant un entier
et, à chaque bip, l'incrémenter de +1 de façon à, par exemple, ne plus
générer de bip au delà de 5.




Celà je l'ai déjà fait mais le problème est qu'il faut détecter aussi
la sortie du survol de l'icone (sans forcément cliquer) pour pouvoir
remettre la variable à 0 : sinon on obtient un seul bip au 1er survol
et rien aux survols suivants

Cordialement



--
Elle est pas belle la vie ?
Avatar
Romain PETIT
Dans son message précédent, Georges Peyre a écrit :

Celà je l'ai déjà fait mais le problème est qu'il faut détecter aussi la
sortie du survol de l'icone (sans forcément cliquer) pour pouvoir remettre la
variable à 0 : sinon on obtient un seul bip au 1er survol et rien aux survols
suivants



Tu peux peut être gérer ça en ajoutant un timer qui change la valeur du
booléen toutes les x secondes.

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Georges Peyre
Bonjour Romain

Romain PETIT a exposé le 03/02/2006 :
Tu peux peut être gérer ça en ajoutant un timer qui change la valeur du
booléen toutes les x secondes.



Effectivement cà améliore mais le résultat parait un peu aléatoire
Le meilleur résultat parait être 1 seconde, mais c'est quand même pas
le top

J'ai cherché un évènement du type MOUSE-ENTER et MOUSE_LEAVE mais je
n'ai rien trouvé

Cordialement






--
Elle est pas belle la vie ?