Systray Icon

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
le_pro_du_pure
Messages : 19
Inscription : mar. 13/avr./2004 9:10
Localisation : Si je ne suis ici, alors, je suis ailleurs.

Systray Icon

Message par le_pro_du_pure »

J'ai créé un utilitaire qui s'affiche dans la barre de taches.
Comment on fait le menu déroulant quand on fait un clic droit sur l'icone?
Si les gens pensaient la moitié de ce qu'ils disent, et qu'ils disaient la moitié de ce qu'ils pensent, ils diraient moins de conneries.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Extrait de l'aide:

Code : Tout sélectionner

Quand un événement intervient sur une icone de la zone SysTray, l'événement #PB_Event_SysTray est renvoyé. EventGadgetID() peut alors être utilisé pour connaître l'icone cliquée. La fonctions EventType() est également mise à jour par cette fonction. 
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Il y a dejà eu des codes la-dessus sur le forum, il me semble.

En voilà un que j'avais posté, avec un menu pop-up.
Il utilise l'icône du programme que tu définis dans les options du projet.

Code : Tout sélectionner

;- Constantes fenêtres , Window Constant 
Enumeration 
  #Win_Main 
EndEnumeration 

;-Constantes diverses , Miscellaneous Constant 
Enumeration 
  #SysIcon 
  #Sytray 
  #PopUp 
EndEnumeration 

;- *********** Extraction de l'icône ************** 
;-************    Icon Extraction    ************** 

;- 
Procedure GetIcone(WinHandle) 
  hInstance = GetWindowLong_(WinHandle,#GWL_HINSTANCE) 
  app.s = Space(255) 
  GetModuleFileName_(0,@app,255) 
  ProcedureReturn ExtractIcon_(hInstance, app, 0) 
EndProcedure 

;- ************************************************ 

Procedure Minimize(Flag.b) 
  If Flag = 1 
    DisableMenuItem(1,1)          ; Désactive le menu 1 , Disable menu 1 
    DisableMenuItem(2,0)          ; Active le menu 2    , Enable menu 2 
    HideWindow(#Win_Main, 1)      ; Réduit la fenêtre   , Minimize window 
  Else 
    DisableMenuItem(1,0)          ; Active le menu 1    , Enable menu 1 
    DisableMenuItem(2,1)          ; Désactive le menu 2 , Disable menu 2 
    HideWindow(#Win_Main, 0)      ; Affiche la fenêtre  , Display the window 
  EndIf 
EndProcedure 

;- Ouverture de la fenêtre, et création des menus et du SysTray 
;- Opening of the window, and creation of the menu and SysTray 
hwnd = OpenWindow(#Win_Main, 300, 300, 100, 100,  #PB_Window_SystemMenu | #PB_Window_Invisible , "SysTray-Test") 

hIconSysTray = GetIcone(hwnd) 

AddSysTrayIcon(#Sytray,hwnd,hIconSysTray)  ; Ajoute l'icône dans le SysTray , Add the icon on the SysTray 
CreatePopupMenu(#PopUp)                    ; Crée un menu Pop-Up            , CreatePopUp menu 
MenuItem(1,"Mettre en icône...")           ; Ajout des menus                , add items 
MenuItem(2,"Afficher...") 
MenuBar() 
MenuItem(3,"Quitter") 

DisableMenuItem(1,1)                       ; Menu inactif,    Item disabled 
DisableMenuItem(2,0)                       ; Menu actif       Item enabled 

;- Début de la boucle 
;- Starting the loop 
Repeat 
  
  Select WaitWindowEvent() 
    Case #PB_Event_SysTray 
      Select EventType() 
        Case #PB_EventType_RightClick         ; Un click droit affiche le menu  , Right click display menu        
          DisplayPopupMenu(#PopUp, hwnd) 
      EndSelect 
      
    Case #PB_EventMenu 
      Select EventMenuID() 
        
        Case 1 : Minimize(1)                  
        Case 2 : Minimize(0)                  
          
        Case 3 : Quit = 1 : End 
      EndSelect 
      
    Case #PB_EventGadget 
      Select EventGadgetID() 
      EndSelect 
    Case #PB_EventCloseWindow : Minimize(1)    
  EndSelect 
Until Quit = 1 
End 
PS: Une recherche dans le forum donne 17 résultat avec le mot-clé "SysTray"
Dernière modification par Chris le dim. 07/nov./2004 20:49, modifié 1 fois.
le_pro_du_pure
Messages : 19
Inscription : mar. 13/avr./2004 9:10
Localisation : Si je ne suis ici, alors, je suis ailleurs.

Message par le_pro_du_pure »

Le problème c'est pas le déclencheur, c'est le menu déroulant...
Merci quand même :wink:
Si les gens pensaient la moitié de ce qu'ils disent, et qu'ils disaient la moitié de ce qu'ils pensent, ils diraient moins de conneries.
le_pro_du_pure
Messages : 19
Inscription : mar. 13/avr./2004 9:10
Localisation : Si je ne suis ici, alors, je suis ailleurs.

Message par le_pro_du_pure »

Merci pour le code
Je crois que je vais pas mal pomper dedans ;)
Si les gens pensaient la moitié de ce qu'ils disent, et qu'ils disaient la moitié de ce qu'ils pensent, ils diraient moins de conneries.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Il est fait pour ça :)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

le menu déroulant, c'est un PopupMenu, regarde dans l'aide à CreatePopupMenu(
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
le_pro_du_pure
Messages : 19
Inscription : mar. 13/avr./2004 9:10
Localisation : Si je ne suis ici, alors, je suis ailleurs.

Message par le_pro_du_pure »

J'ai pas assez cherché, dsl :oops:
Je me mettrai a l'ouvrage dès que possible (mon ordi est 1 peu endommagé... inutilisable)...
En fait là j'écris du cdi du lycée :wink:
Merci Pour ces conseils trèèèèèèès utiles 8)
Si les gens pensaient la moitié de ce qu'ils disent, et qu'ils disaient la moitié de ce qu'ils pensent, ils diraient moins de conneries.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

; mis en V4.10 par Dobro

Code : Tout sélectionner


; mis en V4.10 par Dobro

;- Constantes fenêtres , Window Constant
Enumeration
    #Win_Main
EndEnumeration

;-Constantes diverses , Miscellaneous Constant
Enumeration
    #SysIcon
    #Sytray
    #PopUp
EndEnumeration

;- *********** Extraction de l'icône **************
;-************    Icon Extraction    **************

;-
Procedure GetIcone(WinHandle)
    hInstance = GetWindowLong_(WinHandle,#GWL_HINSTANCE)
    app.s = Space(255)
    GetModuleFileName_(0,@app,255)
    ProcedureReturn ExtractIcon_(hInstance, app, 0)
EndProcedure

;- ************************************************

Procedure Minimize(Flag.b)
    If Flag = 1
        DisableMenuItem(#PopUp,1,1)          ; Désactive le menu 1 , Disable menu 1
        DisableMenuItem(#PopUp,2,0)          ; Active le menu 2    , Enable menu 2
        HideWindow(#Win_Main, 1)      ; Réduit la fenêtre   , Minimize window
    Else
        DisableMenuItem(#PopUp,1,0)          ; Active le menu 1    , Enable menu 1
        DisableMenuItem(#PopUp,2,1)          ; Désactive le menu 2 , Disable menu 2
        HideWindow(#Win_Main, 0)      ; Affiche la fenêtre  , Display the window
    EndIf
EndProcedure

;- Ouverture de la fenêtre, et création des menus et du SysTray
;- Opening of the window, and creation of the menu and SysTray
hwnd = OpenWindow(#Win_Main, 300, 300, 100, 100,  "SysTray-Test",#PB_Window_SystemMenu | #PB_Window_Invisible )

hIconSysTray = GetIcone(hwnd)
; il faut choisir un icone dans Projet option de compilation
AddSysTrayIcon(#Sytray,hwnd,hIconSysTray)  ; Ajoute l'icône dans le SysTray , Add the icon on the SysTray
CreatePopupMenu(#PopUp)                    ; Crée un menu Pop-Up            , CreatePopUp menu
MenuItem(1,"Mettre en icône...")           ; Ajout des menus                , add items
MenuItem(2,"Afficher...")
MenuBar()
MenuItem(3,"Quitter")

DisableMenuItem(#PopUp,1,1)                       ; Menu inactif,    Item disabled
DisableMenuItem(#PopUp,2,0)                       ; Menu actif       Item enabled

;- Début de la boucle
;- Starting the loop
Repeat
    
    Select WaitWindowEvent()
        Case #PB_Event_SysTray
            Select EventType()
                Case #PB_EventType_RightClick         ; Un click droit affiche le menu  , Right click display menu       
                    DisplayPopupMenu(#PopUp, hwnd)
            EndSelect
            
        Case #PB_Event_Menu
            Select EventMenu()              ; MenuID(#PopUp)
                    
                Case 1 : Minimize(1)                 
                Case 2 : Minimize(0)                 
                    
                Case 3 : Quit = 1 : End
            EndSelect 
            
        Case #PB_Event_Gadget
            ; Select GadgetID()
            ; EndSelect
        Case #PB_Event_CloseWindow : Minimize(1)   
    EndSelect
Until Quit = 1
End
Dernière modification par Backup le ven. 21/mars/2008 17:13, modifié 1 fois.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Quitte à mettre des codes en version 4.10, assure toi au moins qu'ils fonctionnent correctement!! :?

Code : Tout sélectionner

    Case #PB_Event_Menu
      Select EventMenu()              ; MenuID(#PopUp)
        
        Case 1 : Minimize(1)                 
        Case 2 : Minimize(0)                 
          
        Case 3 : Quit = 1 : End
      EndSelect
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Chris a écrit :Quitte à mettre des codes en version 4.10, assure toi au moins qu'ils fonctionnent correctement!! :?
j'ai modifié , mais chez moi ça marchait quand meme 8O
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Dobro a écrit :
Chris a écrit :Quitte à mettre des codes en version 4.10, assure toi au moins qu'ils fonctionnent correctement!! :?
j'ai modifié , mais chez moi ça marchait quand meme 8O
Chez moi, non!

L'icône apparaissait bien dans la barre de tâches, mais le clic sur le menu n'avait aucun effet. :)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Aucune icone n'apparait dans le systray chez moi...

si je lance le debugger j'ai une gros surlignage rouge à

Code : Tout sélectionner

AddSysTrayIcon(#Sytray,hwnd,hIconSysTray)  ; Ajoute l'icône dans le SysTray , Add the icon on the SysTray
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Il faut choisir une icone dans les options du projet.

"Compilateur" -> "Options du compilateur" -> cocher "Utiliser une icône" sous l'éditeur de PB

"Projet" -> "Options du projet" sous jaPBe.

Et évidemment, il faut choisir une icône! :lol:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Ar-S a écrit :Aucune icone n'apparait dans le systray chez moi...

a quoi ça sert ce que j'ecris a la ligne 45
(soit la ligne directement superieur a l'erreur)
; il faut choisir un icone dans Projet option de compilation
:? :? :lol: :lol: :lol:
Répondre