Systray Icon
-
- Messages : 19
- Inscription : mar. 13/avr./2004 9:10
- Localisation : Si je ne suis ici, alors, je suis ailleurs.
Systray Icon
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?
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.
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.
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.
PS: Une recherche dans le forum donne 17 résultat avec le mot-clé "SysTray"
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
Dernière modification par Chris le dim. 07/nov./2004 20:49, modifié 1 fois.
-
- Messages : 19
- Inscription : mar. 13/avr./2004 9:10
- Localisation : Si je ne suis ici, alors, je suis ailleurs.
-
- Messages : 19
- Inscription : mar. 13/avr./2004 9:10
- Localisation : Si je ne suis ici, alors, je suis ailleurs.
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
-
- Messages : 19
- Inscription : mar. 13/avr./2004 9:10
- Localisation : Si je ne suis ici, alors, je suis ailleurs.
J'ai pas assez cherché, dsl
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
Merci Pour ces conseils trèèèèèèès utiles

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

Merci Pour ces conseils trèèèèèèès utiles

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.
; 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.
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
Aucune icone n'apparait dans le systray chez moi...
si je lance le debugger j'ai une gros surlignage rouge à
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
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳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