C'est un morceau de code pour libérer une quantité voulue de RAM.
Je vous le donne tel quel, il suffit de le coller dans votre Form.
Si vous voulez le voir en action, visitez ce lien:
http://www.vbfrance.com/codes/TEMPERATURE-CHARGE-CPU-LIBERATION-MEMOIRE-POUR-CARTE-ASUS_36665.aspx
C'est une source qui récupère les infos des cartes Asus (mais le reste fonctionne avec les autres cartes) et accessoirement qui libère de la mémoire.
Voilà, j'espère que ça vous sera utile...
Source / Exemple :
Option Explicit
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
Const OCTETVERSMO = &H100000
Private Sub Form_Load()
Dim lCompteur As Long
Dim MemStat As MEMORYSTATUS
Dim sFree() As String
Dim lMax As Long
Dim lInit As Long
Dim lQuantiteVoulue As Long
Dim lQuantite As Long
'On récupère la valeur de la mémoire initiale
GlobalMemoryStatus MemStat
lInit = Int(MemStat.dwAvailPhys / OCTETVERSMO)
'On demande la quantité à libérer
lQuantiteVoulue = InputBox("Quantité à libérer en Mo:", , 20)
lQuantite = lQuantiteVoulue
Do
'lMax est le nombre de fois que l'on va attribué un Mo de mémoire à sFree
lMax = Int(MemStat.dwAvailPhys / OCTETVERSMO) / 2 + lQuantite + 5
'On bouffe toute la mémoire
For lCompteur = 0 To lMax
ReDim Preserve sFree(lCompteur)
sFree(lCompteur) = String$(OCTETVERSMO, vbNullChar)
Next
'On rend la mémoire prise
ReDim sFree(0)
DoEvents
'On teste si il est encore possible de récupérer de la mémoire sinon on sort de la boucle
GlobalMemoryStatus MemStat
If lQuantiteVoulue - Int(MemStat.dwAvailPhys / OCTETVERSMO) + lInit > lQuantite And Int(MemStat.dwAvailPhys / OCTETVERSMO) > lInit Then
Exit Do
Else
lQuantite = lQuantiteVoulue - Int(MemStat.dwAvailPhys / OCTETVERSMO) + lInit
End If
'On boucle jusqu'à la libération de la mémoire voulue
Loop Until Int(MemStat.dwAvailPhys / OCTETVERSMO) >= lInit + lQuantiteVoulue
Erase sFree
MsgBox (Int(MemStat.dwAvailPhys / OCTETVERSMO) - lInit) & " Mo ont été libérés.", vbInformation
End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.