Comment restaurer une application reduite dans le "system tray" [Résolu]

Messages postés
7
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
16 septembre 2006
- - Dernière réponse : cologo
Messages postés
7
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
16 septembre 2006
- 16 sept. 2006 à 14:33
Bonjour,

     À partir d'une programme que je suis en train de faire, j'aimerais utiliser une (très intéressante) loupe que j'ai trouvé sur internet. Lorsqu'on démarre le programme de loupe, elle va se "cacher" dans le "system tray". En temps normal, lorsqu'on désire l'utiliser, on clique sur l'icône en question (dans le "system tray"). Une fois à l'écran, il suffit de cliquer sur un bouton de la souris pour qu'elle retourne se cacher dans le "system tray".

     Le problème c'est que je dois cacher la barre des tâches. Comme je ne vois plus le "system tray", je ne vois plus l'icône de la loupe non plus. J'ai donc besoin d'aide pour savoir comment, par programmantion (VB6), je peux l'activer (comme si j'avais cliqué sur l'icône dans "system tray").

    J'aimerais aussi savoir comment on peut avoir la liste des applications qui  se trouvent actuellement dans le "system tray". (pour pouvoir démarrer la loupe si elle n'y est pas).

      La loupe utilisée est "Virtual Magnifying Glass" qu'on retrouve sur le site http://magnifier.sourceforge.net/ et elle est tout à fait gratuite ! À mon avis, c'est la loupe qui est la plus évidente et naturel à utiliser... mais ce n'est que mon avis...

Merci d'avance pour votre aide très précieuse et très appréciée !

Cologo
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11
3
Merci
salut,

et ça :

Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Private
Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

    keybd_event vbKeyMenu, MapVirtualKey(vbKeyMenu, 0), 0, 0  ' alt down
    keybd_event vbKeyControl, MapVirtualKey(vbKeyControl, 0), 0, 0
    keybd_event vbKeyE, MapVirtualKey(vbKeyE, 0), 0, 0
    keybd_event vbKeyE, MapVirtualKey(vbKeyE, 0), 2, 0
    keybd_event vbKeyControl, MapVirtualKey(vbKeyControl, 0), 2, 0
    keybd_event vbKeyMenu, MapVirtualKey(vbKeyMenu, 0), 2, 0  ' alt up

ShareVB

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 217 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ShareVB
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
28
0
Merci
salut,
désolé de ne pas répondre... mais si tu fais une appli, pourquoi n'intègres-tu pas ta propre loupe... ?
c'est le genre de code très facile à réaliser (sans compter qu'il y a déjà des exemples dispos...)

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Commenter la réponse de PCPT
Messages postés
7
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
16 septembre 2006
0
Merci
Bonjour,

    Les exemples de loupe que j'ai trouvé jusqu'à maintenant sont pour des loupes qui sont fixes à l'écran et qui montrent la région autour du pointeur de la souris. Il y a donc une zone de l'écran, sous l'espace utilisé par cette loupe, qui est constamment cachée. C'est quand même pas mal, mais la loupe "Virtual Magnifying Glass" se promène à l'écran en remplaçant le curseur de la souris et elle nous montre la région sous cette loupe. Il n'y a donc pas d'espace caché. 

     Pour le moment j'ai mis une loupe de ce genre (fixe) en attendant de réussir à faire bouger ma loupe ou d'avoir de l'aide pour faire fonctionner la loupe "Virtual Magnifying Glass" à partir de mon code. Je suis donc quand même intéressé si quelqu'un a une bonne idée pour faire sortir cette merveille du "system tray" ....tel le génie de la bouteille !

Cologo
Commenter la réponse de cologo
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11
0
Merci
salut,

pour la liste des icônes du tray :
http://www.vbfrance.com/codes/SAVOIR-QUEL-PROGRAMME-APPARTIENT-ICONE-ZONE-NOTIFICATION-TRAY_24852.aspx

pour envoyer un message, regarder dans cette source "l'affichage du menu"

ShareVB
Commenter la réponse de ShareVB
Messages postés
7
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
16 septembre 2006
0
Merci
Bonjout ShareVB

     Je suis allé voir le code en question. Je peux effectivement lister la lister des "process" qui sont dans le "system tray" avec un certain nombre d'informations. Cependant, je ne vois pas de source "affichage du menu" dont vous faites mention.

   Lorsque vous dites de regarder dans cette source "pour envoyer un message", serait-il possible de me donner plus d'informations. Quelle sorte de message faut-il envoyer à l'application pour la restaurer à sa taille normale ?

   J'apprécierais beaucoup si vous pouviez éclairer ma chandelle un peu plus.

Cologo
Commenter la réponse de cologo
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11
0
Merci
salut,

euh en fait, quand tu cliques à droite sur une ligne de la liste, ca affiche le menu contextuel de l'application...c'était plutôt ExecuteContextMenu...

dans ton cas, ça pourrait être :

'permet d'afficher le menu contextuel de l'icone
Public Sub ExecuteApp(ByVal hwnd As Long, ByVal uCallBackMessage As Long, ByVal uID As Long)
    'on envoie une message de notification
    PostMessage hwnd, uCallBackMessage, uID, ByVal WM_LBUTTONDOWN
    PostMessage hwnd, uCallBackMessage, uID, ByVal WM_LBUTTONUP
End Sub

à appeler avec pour NT/XP :
ticons(x).hwnd
ticons(x).uCallBackMessage
ticons(x).uID

avec pour 9x/ME :
sys.lpsysListHeader.lpNotifyDataList(x).NotifyDataA.hwnd
sys.lpsysListHeader.lpNotifyDataList(x).NotifyDataA.uCallBackMessage
sys.lpsysListHeader.lpNotifyDataList(x).NotifyDataA.uID

ShareVB
Commenter la réponse de ShareVB
Messages postés
7
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
16 septembre 2006
0
Merci
Bonjour,

    C'est intéressant, ça approche de ce que j'ai besoin mais ... ce n'est pas encore tout à fait cela. Avec ce code j'accède au menu contextuel de l'application où je dois "encore" choisir d'agrandir l'application. J'aimerais pouvoir cliquer sur une icône (l'image d'une loupe par exemple) et que ça restore l'application à l'écran, directement, sans autre "clic" ou choix à faire (comme si je cliquais sur l'icône de l'application dans le "System Tray"). Cela correspond au premier choix du menu contextuel.

    Je viens aussi de me rendre compte qu'on peut faire un <CTRL>e qui restore aussi l'application en question. J'ai tenté d'utiliser la commande SendKeys pour envoyer ces 3 clés avec :

sendkeys ("^%e")   ou encore sendkeys ("^(%)e")   ou encore sendkeys ("(^)(%)e") 

mais mon XP reste sourd ... et le genie reste caché dans la bouteille). Quelqu'un aurait-il une suggestion sur une ou l'autre de ces options ?

Merci d'avance pour votre précieuse aide !!!

Cologo
Commenter la réponse de cologo
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11
0
Merci
salut,

pourquoi pas : sendkeys ("^(%e)")

ShareVB
Commenter la réponse de ShareVB
Messages postés
7
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
16 septembre 2006
0
Merci
Bonjour,

    Malheureusement .... ça ne marche pas plus...

Merci quand même pour la suggestion :-)

Cologo
Commenter la réponse de cologo
Messages postés
7
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
16 septembre 2006
0
Merci
Merveille ! ÇA MARCHE !

     Merci ShareVB...... j'ai beaucoup apprécié ton aide ! Je vais pouvoir continuer mon code

Cologo
Commenter la réponse de cologo