Par exemple, l'exemple suivant libère purement et simplement la moitié de la mémoire sur un de mes serveurs en une seule utilisation et est très utile quand vous avez des applis lourdes mal concues qui tournent en tâche de fond.
Code : Tout sélectionner
$list = ProcessList()
for $i = 1 to $list[0][0]
_ReduceMemory($list[$i][1])
next
Func _ReduceMemory($PID)
Local $dll = DllOpen("kernel32.dll")
Local $ai_Handle = DllCall($dll, 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $PID)
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
DllCall($dll, 'int', 'CloseHandle', 'int', $ai_Handle[0])
DllClose($dll)
Return $ai_Return[0]
EndFunc
Cette fonction peut egalement être utilisée en une seule ligne dans votre code, par exemple après la création de votre GUI ou même dans une boucle infinie si vous faites beaucoup d'actions.
Code : Tout sélectionner
DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)