Afficher le pourcentage de mem utilisée dans le systray

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Afficher le pourcentage de mem utilisée dans le systray

Message par Le Soldat Inconnu »

et voilà un code qui sert à rien sauf à faire joli :roll:

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)
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)]
Lukky
Messages : 340
Inscription : dim. 25/janv./2004 12:22
Localisation : Morbihan

Message par Lukky »

Aucun code n'est inutile.

De plus celui-ci manipule les infos mémoire et la tray alors ..

JL
Quand on me gonfle trop j'éclate, sinon ça va !
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

moi je parle du programme compilé :roll: , pas du code qui lui est toujours intéressant.
c'est vrai qu'en relissant mon post, j'ai dis quoi que je pensais de travers :mrgreen:
autant pour moi ...
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)]
Lukky
Messages : 340
Inscription : dim. 25/janv./2004 12:22
Localisation : Morbihan

Message par Lukky »

Sans importance :-)

JL
Quand on me gonfle trop j'éclate, sinon ça va !
Répondre