bonsoir,
voila je travaille sur un ptit projet depuis quelques jours et il ne me manque plus que ce petit detail qui ma pris les 3/4 du temp (plus ou moins 12h) donc je me resigne et vient demander ici si quelqu'un ne sais pas car je pense que cela doit etre un detail qui m'echappe donc voila le code :
'type de données personnalisé
Private Type Donnees
Taille As Long
Handle As Long
Id As Long
Param As Long
Rappel As Long
icone As Long
Etiquette As String * 59
End Type
'constantes requises par Shell_NotifyIcon :
Const Ajout = &H0
Const Retire = &H2
Private Declare Function Shell_NotifyIcon Lib "shell32" _
Alias "Shell_NotifyIconA" _
(ByVal action As Long, don As Donnees) As Boolean
'instance de Donnees
Dim don As Donnees
Private Declare Sub GlobalMemoryStatus Lib "kernel32" _
( _
lpBuffer As MEMORYSTATUS _
)
Private Type MEMORYSTATUS
dwLength As Long
dwMemoryLoad As Long
dwTotalPhys As Long
dwAvailPhys As Long
dwTotalPageFile As Long
dwAvailPageFile As Long
dwTotalVirtual As Long
dwAvailVirtual As Long
End Type
Public sTxtRam As Integer
Public sTxtVirt As Integer
Private Function GetMemStats( _
TotalRam As Long, _
DispoRam As Long, _
TotalVirt As Long, _
DispoVirt As Long _
)
'Renvoie les statistiques concernant la mémoire
'utilisée
Dim MemStat As MEMORYSTATUS
'Taille de la variable
MemStat.dwLength = Len(MemStat)
GlobalMemoryStatus MemStat
With MemStat
TotalRam = .dwTotalPhys
DispoRam = .dwAvailPhys
TotalVirt = .dwTotalVirtual
DispoVirt = .dwAvailVirtual
End With
End Function
Private Function DrawMemStat( _
MemType As Long, _
MemMax As Long, _
MemUsed As Long _
)
'Affiche les résultats en fonction du type
'de mémoire, de la mémoire disponible et de
'la mémoire utilisée
Dim sTxt As String
Select Case MemType
Case 0 'RAM
lblRAMTotal = MemUsed & " Mo"
sTxt = Round(MemUsed / MemMax * 100, 0)
LblRam.Caption = "Mémoire RAM : " & MemUsed& & " Mo - " & sTxt & "%"
ReyRAM.Value = sTxt
sTxtRam = sTxt
don.Etiquette = sTxt
Case 1 'Mémoire Virtuelle
lblVirtTotal = MemUsed & " Mo"
sTxt = Round(MemUsed / MemMax * 100, 0)
lblVirt.Caption = "Mémoire Virtuel : " & MemUsed& & " Mo - " & sTxt & "%"
ReyVIRT.Value = sTxt
sTxtVirt = sTxt
End Select
End Function
Private Sub Command1_Click()
Shell_NotifyIcon Ajout, don
App.TaskVisible = False
Me.Visible = False
End Sub
Private Sub tmrRefresh_Timer()
'A chaque rafraîchissement, on
'récupère les statistiques et on les affiche
'A : RAM AA : RAM libre
'B : Mémoire Virtuelle BB : Mémoire Virtuelle libre
'On va calculer l'espace utilisé et convertir les données en Mo
'pour pouvoir les afficher
Dim a As Long, B As Long
Dim AA As Long, BB As Long
GetMemStats a, AA, B, BB
DrawMemStat 0, (a \ (1024 ^ 2)), ((a - AA) \ (1024 ^ 2))
DrawMemStat 1, (B \ (1024 ^ 2)), ((B - BB) \ (1024 ^ 2))
don.Etiquette = LblRam.Caption & vbCrLf & _
lblVirt.Caption
End Sub
Sub Form_Load()
With don
.Taille = Len(don)
.Handle = Me.hWnd
.Id = vbNull
'Pour qu'un icône soit visible, que celui-ci soit sensible aux entrées utilisateur et qu'un texte soit affiché au passage de la souris
.Param = &H1 Or &H2 Or &H4
'Icône sensible au mouvement de la souris
.Rappel = &H200
.icone = Me.Icon
.Etiquette = "Memoires en Charge"
End With
End Sub
Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
'cette procédure reçoit les rappels de l'icône de barre d'état système.
Select Case Button
Case vbLeftButton
'appelle la fonction de restauration
Call Restaure_Click
Case vbRightButton
'appelle l'affichage du menu
Me.PopupMenu Me.Menu
End Select
End Sub
Sub Restaure_Click()
Me.WindowState = vbNormal
Shell_NotifyIcon Retire, don
App.TaskVisible = True
Me.Visible = True
End Sub
Sub Exit_Click()
Shell_NotifyIcon Retire, don
Unload Me
End Sub
voila donc j'ai mis les ligne :
don.Etiquette = LblRam.Caption & vbCrLf & _
lblVirt.Caption
et donc voila j'aimerais que a chaque fois que l'utilisateur passe sur l'icone mise a coter de l'horloge cela fasse cette action (ou meme s'il reste dessus) j'ai penser dabord tous simplement a mettre un timer qui refresh cette action mais helas cela ne va pas ... a croire que quand sa va en systray tous ce qui se trouve sur la frm est "figer" autant les timer que les progressbarre et autres donc je me demandais comment faire pour refresher se qui est mis quand on passe sur l'ico a coter de l'horloge lors du passage de la souris ^^
merci d'avance
Diablaman