[R] Problème avec MemGetStats

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

[R] Problème avec MemGetStats

#1

Message 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
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#2

Message par sylvanie »

j'ai fait tourné ce script sur mon XP PRO, et ça marche...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
MiXS
Niveau 4
Niveau 4
Messages : 82
Enregistré le : mar. 13 nov. 2007 23:10
Status : Hors ligne

#3

Message par MiXS »

Et sous vista il marche nickel :wink:
Image
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: probleme avec MemGetStats

#4

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

#5

Message 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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#6

Message 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
 
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre