Page 1 sur 1

[R] Problème avec MemGetStats

Posté : ven. 23 nov. 2007 02:37
par arrkhan
Toujours le sysifo ^^

donc le code ci-après fonctionne apeu pres mis à part qu'il ne me donne pas les même info que taskmgr
si j'ai mis le +1 sur le $memtot, c'est pour avoir un entier

Code : Tout sélectionner

$Mem = MemGetStats ( ) 
$MemTot = Round ( ( $Mem[1] ) / 1024 , 0 ) + 1 
$MemFree = Round ( ( $Mem[2] ) / 1024 , 2 ) 
$MemUtil = $MemTot - $MemFree 
MsgBox ( 0 , "" , "Mémoire totale:" & @TAB & $MemTot & " Mo" & @CRLF _ 
& "Mémoire utilisée:" & @TAB & $MemUtil & " Mo" & " - " & Round ( ( ( $MemUtil ) *100/ ( $MemTot ) ) , 2 ) & " %" )
Je souhaiterai savoir si c'est normal ou si j'ai fait une erreur quelquepart ... Je ne pense pas car autant le probleme existe sous XP Home et Pro mais pas sous Vista, la je seche, si vous connaissait un bug de cette version sous XP

egalement, comment faire pour que les infos se rafraichissent automatiquement toute les secondes ou 5 secondes par exemple

Posté : ven. 23 nov. 2007 19:02
par sylvanie
j'ai fait tourné ce script sur mon XP PRO, et ça marche...

Posté : ven. 23 nov. 2007 19:25
par MiXS
Et sous vista il marche nickel :wink:

Re: probleme avec MemGetStats

Posté : ven. 23 nov. 2007 23:18
par Tlem
arrkhan a écrit :si j'ai mis le +1 sur le $memtot, c'est pour avoir un entier
Je ne comprend pas l'utilité de rajouter 1 à la mémoire totale.
Elle sera forcément au moins supérieur à 1, car pour faire tourner un OS, il faut un minimum de mèmoire !!!

Avec ce type de calcul : $Mem[1] / 1024
Pour avoir un chiffre inférieur à 1, il faudrais avoir moins de 1024 Octets de mémoire vive. :shock: :shock: :shock: :shock: Impensable.

Posté : sam. 24 nov. 2007 08:01
par arrkhan
Plop,

Non Tlem, ce n'est pas le but de la manoeuvre, si tu regarde attentivement la ligne :
$MemTot = Round ( ( $Mem[1] ) / 1024 , 0 ) + 1
je demande la suppression des décimales avec Round 0, mais du probablement a l'imperfection générale des modules mémoire, je me retrouve avec 2047 de mémoires, 2047.17 avec 2 décimales, en les enlevant et en mettant +1, on se retrouve avec la valeur correcte.

Posté : sam. 24 nov. 2007 12:40
par Tlem
OK, je n'avais pas compris.

Mais pour info, votre astuce ne fonctionne pas chez moi !
Avant que vous ne passiez trop de temps à faire des choses 'fantasmagoriques', regarder cet UDF qui fait tout ce que vous demandez, et même plus :
http://www.autoitscript.com/forum/index ... t&id=12096

Utilisez cet exemple pour voir ce que vous voulez :

Code : Tout sélectionner

#include "CompInfo.au3"

Dim $OSs, $Memory

_ComputerGetOSs($OSs)
_Err()
$OsName = StringSplit($OSs[1][0],"|")
MsgBox(0, "Test _ComputerGetOSs", $OsName[1])

_ComputerGetMemory($Memory)
_Err()
    
For $i = 1 To $Memory[0][0] Step 1
    MsgBox(0, "Test _ComputerGetMemory", $Memory[$i][0] & " : " & _
    ($Memory[$i][2] / (1024*1024)) & " Mo" )
Next

Func _Err()
If @error Then
    $error = @error
    $extended = @extended
    Switch $extended
        Case 1
            _ErrorMsg($ERR_NO_INFO)
        Case 2
            _ErrorMsg($ERR_NOT_OBJ)
    EndSwitch
EndIf
    
EndFunc

Func _ErrorMsg($message, $time = 0)
    MsgBox(48 + 262144, "Error!", $message, $time)
EndFunc