
Code : Tout sélectionner
#Masque = 100
#Image = 200
#SysTray = 0
; permet de créer un icône avec 2 images
; l'une représentant le masque et l'autre l'image de l'icone
Procedure.l CreateIcon(Icon.l, Image.l, Mask.l)
Protected * Bitmap.LONG
UseImage(Image)
CreateImage(Icon, ImageWidth(), ImageHeight())
! extrn _PB_Image_CurrentObject
! MOV eax, [_PB_Image_CurrentObject]
! MOV [esp + 12], eax
DeleteObject_(*Bitmap\l)
NewIcon.ICONINFO
NewIcon\fIcon = #True
NewIcon\hbmMask = UseImage(Mask)
NewIcon\hbmColor = UseImage(Image)
*Bitmap\l = CreateIconIndirect_(@NewIcon)
ProcedureReturn UseImage(Icon)
EndProcedure
; On crée une fenêtre invisible
If OpenWindow(0, 0, 0, 200, 200, #PB_Window_Invisible, "Mémoire") = 0
End
EndIf
; Création du PopopMenu
CreatePopupMenu(0)
MenuItem(0, "Quitter")
MenuBar()
MenuItem(1, "Information")
; Création du masque de l'icône
CreateImage(#Masque, 16, 16)
StartDrawing(ImageOutput())
Box(0, 0, 16, 16, $FFFFFF)
Box(3, 0, 8, 16, 0)
StopDrawing()
; Création des icônes
For n = 0 To 14
CreateImage(#Image + n, 16, 16)
StartDrawing(ImageOutput())
Box(0, 0, 16, 16, 0) ; Fond en noir
Box(4, 1, 6, 14, $465555) ; Rectangle gris
For nn = 0 To n
If Int(nn / 2 + 0.6) = Int(nn / 2)
Line(4, 14 - nn, 6, 0, $FFB612)
Else
Line(4, 14 - nn, 6, 0, ColorLuminosity($FFB612, 0.75))
EndIf
Next
StopDrawing()
; Création de l'icône
CreateIcon(n, #Image + n, #Masque)
Next
AddSysTrayIcon(#SysTray, WindowID(), UseImage(0))
SysTrayIconToolTip(#SysTray, "Pourcentage d'utilisation mémoire")
Timer = SetTimer_(WindowID(), 0, 10000, 0)
MemoireInfo.MEMORYSTATUS
MemoireInfo\dwLength = SizeOf(MEMORYSTATUS)
Repeat
Event = WaitWindowEvent()
If Event = #WM_TIMER
GlobalMemoryStatus_(@MemoireInfo) ; On récupère les information sur la RAM
Pourcentage = MemoireInfo\dwMemoryLoad ; Pourcentage de RAM utilisée
Libre = MemoireInfo\dwAvailPhys / 1024 / 1024 ; Espace libre en Mo
Total = MemoireInfo\dwTotalPhys / 1024 / 1024
ChangeSysTrayIcon(#SysTray, UseImage(Int(Pourcentage * 0.14)))
ElseIf Event = #PB_Event_SysTray
Select EventType()
Case #PB_EventType_RightClick
DisplayPopupMenu(0, WindowID()) ; on affiche le PopupMenu
EndSelect
ElseIf Event = #PB_EventMenu
Select EventMenuID() ; menu et barre d'outils
Case 0
Event = #PB_Event_CloseWindow
Case 1
MessageRequester("Information", "Concepteur : Le Soldat Inconnu [Bouguin Régis]" + Chr(10) + "Programmé sur PureBasic" + Chr(10) + Chr(10) + "http://perso.wanadoo.fr/lesoldatinconnu/", 4 * 16)
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
KillTimer_(WindowID(), Timer)