Function Memory(Optional $sComputer)
Dim $MemKey, $HexDmp, $Pointer, $Counter, $Start, $Hex, $HVal, $Hex2Dec
$MemKey = 'HKLM\Hardware\ResourceMap\System Resources\Physical Memory'
$MemKey = IIf((Not $sComputer), $MemKey,('\\'+Join(Split($sComputer,'\'),'',3)+'\'+$MemKey))
$HexDmp = ReadValue($MemKey, '.Translated')
If Len($HexDmp) = 0 Or @ERROR
$Memory = 0
$Error = IIf(@ERROR, @ERROR, 87)
Exit $Error
EndIf
Dim $HVals[((Len($HexDmp) / 32) - 2)]
$Pointer = 0
For $Start = 65 To Len($HexDmp) Step 32
$Hex = ''
For $Counter = 6 To 0 Step -2
$Hex = $Hex + SubStr($HexDmp, $Start + $Counter, 2)
Next
$HVals[$Pointer] = $Hex
$Pointer = $Pointer + 1
Next
For Each $HVal In $HVals
$Hex2Dec = 0.0
While $HVal
$Hex2Dec = 16.0 * $Hex2Dec + Execute('Exit &' + Left($HVal ,1))
$HVal = SubStr($HVal ,2)
Loop
$Memory = $Memory + CDbl($Hex2Dec) / 1024
Next
$Memory = Int(($Memory + 648) / 1024)
If ($Memory Mod 2)=1
$Memory = $Memory+1
EndIf
EndFunction |