Page 1 sur 2
info avec les systray
Publié : sam. 26/nov./2005 17:50
par gadjet35
Re: info avec les systray
Publié : sam. 26/nov./2005 17:59
par Chris
Publié : sam. 26/nov./2005 18:01
par gadjet35
bon ce probleme est regler mais voici un code et sa ne marche pas
bien sur il fait rien ce n'est pas terminer :
Code : Tout sélectionner
;- Window Constante
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_0
#Button_1
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 146, 154, 481, 258, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar , "test avec les systray")
If CreateGadgetList(WindowID())
ButtonGadget(#Button_0, 130, 50, 180, 40, "fermer la fenetre")
ButtonGadget(#Button_1, 130, 150, 180, 40, "quitter le programme ")
EndIf
EndIf
EndProcedure
open_window_0()
image$ = OpenFileRequester("","","",0)
LoadImage(0,image$)
AddSysTrayIcon(1,WindowID(#window_0),ImageID())
Repeat
Select WaitWindowEvent()
Case #PB_EventCloseWindow
quit = 1
EndSelect
Until quit = 1
mon addsystrayicon() ne marche pas il n'ajoute aucune icone en bas !!!
Publié : sam. 26/nov./2005 18:32
par Backup
mon addsystrayicon() ne marche pas il n'ajoute aucune icone en bas
si! mais pour ça il faut choisir une image au format "*.ICO"
Publié : sam. 26/nov./2005 19:34
par Chris
C'est marqué en toutes lettres dans l'aide. C'est pour ça que je n'ai pas répondu. Faut quand même pas pousser

Publié : dim. 27/nov./2005 7:18
par gadjet35
mais pourtant j'avait une image au format *.ico mais sa na pas marcher !
Publié : dim. 27/nov./2005 7:22
par Chris
Si, avec un fichier *.ico, ça marche.
Ton fichier n'était peut-être pas un vrai *.ico. Essaye avec un autre.
Publié : dim. 27/nov./2005 8:05
par gadjet35
mais si c'était un *.ico meme que je l'ai créer avec un de mes programmes :
Code : Tout sélectionner
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- MenuBar Constants
;
Enumeration
#MenuBar_0
EndEnumeration
Enumeration
#MENU_0
#MENU_1
#MENU_2
EndEnumeration
;- Gadget Constants
;
Enumeration
#Image_0
#Button_0
#Button_1
EndEnumeration
UseJPEGImageEncoder()
UsePNGImageDecoder()
UseJPEGImageDecoder()
Procedure Open_Window_0()
If OpenWindow(#Window_0, 0, 0, 1018, 707, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Fichier *.cur *.ico v4.5")
If CreateMenu(#MenuBar_0, WindowID())
MenuTitle("Images")
MenuItem(#MENU_0, "Charger image")
MenuTitle("Fichiers")
MenuItem(#MENU_1, "Nouveau fichier (*.cur)")
MenuItem(#MENU_2, "Nouveau fichier (*.ico)")
EndIf
If CreateGadgetList(WindowID())
ImageGadget(#Image_0, 20, 80, 980, 590, Image0, #PB_Image_Border)
ButtonGadget(#Button_0, 80, 20, 190, 40, "Créer un fichier *.ico")
ButtonGadget(#Button_1, 740, 30, 180, 40, "Créer un fichier *.cur")
EndIf
EndIf
EndProcedure
open_window_0()
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
Case #button_0
fichier$ = SaveFileRequester("Enregistrer sous...","","*.ico|*.ico",0)
SaveImage(0,fichier$+".ico")
Case #button_1
fichier$ = SaveFileRequester("Enregistrer sous...","","*.cur|*.cur",0)
SaveImage(0,fichier$+".cur")
EndSelect
Case #PB_EventMenu
Select EventMenuID()
Case #menu_0
image$ = OpenFileRequester("charger...","","fichier image|*.bmp;*.jpeg;*.gif;*.jpg;*.png;*.dib",0)
LoadImage(0,image$)
SetGadgetState(#image_0,ImageID())
Case #menu_1
fichier$ = OpenFileRequester("Enregistrer sous...","","*.cur|*.cur",0)
SaveImage(0,fichier$+".cur")
Case #menu_2
fichier$ = OpenFileRequester("Enregistrer sous...","","*.ico|*.ico",0)
SaveImage(0,fichier$+".ico")
EndSelect
Case #PB_EventCloseWindow
quit = 1
EndSelect
Until quit = 1
et maintenant ne me sort pas que c'est mon programme qui ne fait pas de vrai *.ico car j'ai ouvert mon explorateur et il m'a bien dit que c'est un *.ico
Publié : dim. 27/nov./2005 8:11
par gadjet35
et voici le code de mon programme que j'essaie de mettre dans la barre systray (peut-être que le problême est dans mon code) :
Code : Tout sélectionner
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_1
#Button_2
#Systray_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 130, 91, 648, 391, #PB_Window_TitleBar , "systray")
If CreateGadgetList(WindowID())
ButtonGadget(#Button_1, 160, 90, 260, 70, "Rabaisser")
ButtonGadget(#Button_2, 160, 200, 260, 90, "Quitter")
EndIf
EndIf
EndProcedure
open_window_0()
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
Case #button_1
image$ = OpenFileRequester("image","","*.ico|*.ico",0)
LoadImage(0,image$)
AddSysTrayIcon(#systray_0,WindowID(),ImageID())
Case #button_2
quit = 1
EndSelect
EndSelect
Until quit = 1
Publié : dim. 27/nov./2005 8:12
par Chris
Tu prends n'importe quel fichier, tu lui donnes une extension *.ico, et l'explorateur te dira que c'est un fichier icone.
L'explorateur se base sur l'extension pour donner le type de fichier.
Le code que tu postes ne crée pas un fichier icone. Un bitmap, tout au plus. Le format icone est un format special, et ton programme ne sait pas le créer.
Publié : dim. 27/nov./2005 8:21
par gadjet35
merci t'avait raison maintenant sa marche autre probleme
enfait j'utilise cette fonction pour que la ´fenetre disparaisse
mais le probleme c'est que j'ai utilser closewindow() mais l'icone par en meme temps après j'ai voulu cacher la fenetre qu'on ne la voit plus sa marche mais elle reste dans la barre en bas qui peut m'aider ???
Publié : dim. 27/nov./2005 8:24
par Chris
Un moyen très simple de savoir si un fichier est une icone ou pas, c'est de regarder sa représentation dans l'explorateur.
Si tu vois l'image contenue dans l'icone, c'est une icone. Sinon, tu vois une image qui représente le programme qui sert à ouvrir le fichier ou l'image standard si il n'y a pas de programme associé.
Dans cette image, Icone_1 est une image normale renommée en .Ico, Icone_2 est une vraie icone
Publié : dim. 27/nov./2005 8:28
par Chris
gadjet35 a écrit :merci t'avait raison maintenant sa marche autre probleme
enfait j'utilise cette fonction pour que la ´fenetre disparaisse
mais le probleme c'est que j'ai utilser closewindow() mais l'icone par en meme temps après j'ai voulu cacher la fenetre qu'on ne la voit plus sa marche mais elle reste dans la barre en bas qui peut m'aider ???
Il faut utiliser HideWindow((#Fenetre, 1) pour cacher la fenêtre et HideWindow(#Fenetre, 0) pour la cacher.
Si tu fermes la fenêtre avec CloseWindow(), tu supprime aussi l'icône puisque l'icône est associée à la fenêtre
Publié : dim. 27/nov./2005 8:45
par gadjet35
mille merci attend deux dernières question :
dans l'aide il y a marqué quelque part pour recuperer un evenement sur une icone utiliser eventgadgetid() mais alors les icones de la barre systray son gadget !
et comment faire pour faire apparetre un menu quand on clique sur l'icone ??? j'ai essayer popumenu() mais il faut que sa apparesse dans une fenetre alors que moi je le veut a coter de l'icone !!!
Publié : dim. 27/nov./2005 9:00
par Chris
Rhoooo!!!!
T'est chiant quand même !
Tiens, un code qui affiche une icône dans le systray.
Quand tu cliques sur l'icône avec le bouton droit, ça affiche un pop-up.
Modifie le chemin pour l'icone
Code : Tout sélectionner
;- Constantes fenêtres , Window Constant
Enumeration
#Win_Main
EndEnumeration
;-Constantes diverses , Miscellaneous Constant
Enumeration
#SysIcon
#Sytray
#PopUp
EndEnumeration
hIconSysTray = LoadImage(#SysIcon, "D:\PureBasic\MesProgs\ClearScreen\ClearScreen.ico")
Procedure Minimize(Flag.b)
DisableMenuItem(1,Flag) ; Active/Désactive le menu 1 - Enable/Disable menu 1
DisableMenuItem(2, Flag!1) ; Active/Désactive le menu 2 - Enable/Disable menu 2
HideWindow(#Win_Main, Flag) ; Réduit la fenêtre , Minimize window
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")
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