Jump to content
Sign in to follow this  

Autoit vs C# Getting Ram issue

Recommended Posts

This is a good question for someone familiar with both C# and autoit...

I'm not sure why this is but, when I bring up the installed RAM using C#, I get a different value than when I do with Autoit...

Here are the scripts..



$aMem = MemGetStats()
$kb = $aMem[1]
$mb = $kb / 1024
$gb = $mb / 1024
Msgbox(0,"Ram" ,"Size in KB: " & $KB & ", Size in MB: " & $MB & ", Size in GB: " & $GB)


using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;
namespace WindowsApp1
    static class Program
        static void Main()
        string Query = "SELECT MaxCapacity FROM Win32_PhysicalMemoryArray";
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(Query);
            foreach (ManagementObject WniPART in searcher.Get())
                UInt32 SizeinKB = Convert.ToUInt32(WniPART.Properties["MaxCapacity"].Value);
                UInt32 SizeinMB = SizeinKB / 1024;
                UInt32 SizeinGB = SizeinMB / 1024;
                MessageBox.Show("Size in KB: " + SizeinKB + ", Size in MB: " + SizeinMB + ", Size in GB: " + SizeinGB);


Can anyone shed some light as to why they report different RAM sizes? Some computers show a close amount, some show a completely different amount


C0d3 is P0etry( ͡° ͜ʖ ͡°)

Share this post

Link to post
Share on other sites

What are the numbers you're getting?

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post

Link to post
Share on other sites

Why you don't add

add a reference to "Microsoft.VisualBasic", then create an instance of the type Microsoft.VisualBasic.Devices.ComputerInfo. That corresponds to My.Computer.Info

And use



Short way c#


Or this way


Edited by Spider001

Share this post

Link to post
Share on other sites

'?do=embed' frameborder='0' data-embedContent>>

MsgBox(0, "Title", "GetPhysicallyInstalledSystemMemory = " & _GetPhysicallyInstalledSystemMemory()) 

Func _GetPhysicallyInstalledSystemMemory()     
$aRet = DllCall("Kernel32.dll", "int", "GetPhysicallyInstalledSystemMemory", "uint64*", "")     
If @error Then Return SetError(1, 0, 0)     
Return $aRet[1] 
Edited by Spider001

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Create New...