Kovacic Posted January 23, 2015 Posted January 23, 2015 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.. Autoit: $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) C#: 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 Thanks!. C0d3 is P0etry( ͡° ͜ʖ ͡°)
BrewManNH Posted January 23, 2015 Posted January 23, 2015 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 GudeHow 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
Spider001 Posted January 23, 2015 Posted January 23, 2015 (edited) 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 My.Computer.Info.TotalPhysicalMemory My.Computer.Info.AvailablePhysicalMemory Short way c# Microsoft.VisualBasic.Devices.ComputerInfo.TotalPhysicalMemory Or this way http://codecorner.keyboarders.com/2013/08/26/get_total_memory_c/ Edited January 23, 2015 by Spider001
Kovacic Posted January 23, 2015 Author Posted January 23, 2015 Trying this now... Thank you!! C0d3 is P0etry( ͡° ͜ʖ ͡°)
jaberwacky Posted January 24, 2015 Posted January 24, 2015 It might be due to integer rounding. UInt32 SizeinMB = SizeinKB / 1024; Helpful Posts and Websites: AutoIt3 Variables and Function Parameters MHz | AutoIt Wiki | Using the GUIToolTip UDF BrewManNH | Can't find what you're looking for on the Forum?
JohnOne Posted January 24, 2015 Posted January 24, 2015 There's a winapi function called something like physicalinstalledmemory or something like that (no access to help file) AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans.
Spider001 Posted January 24, 2015 Posted January 24, 2015 (edited) '?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] EndFunc Edited January 24, 2015 by Spider001
JohnOne Posted January 24, 2015 Posted January 24, 2015 Yes, there is also func in standard UDF's _WinAPI_GetPhysicallyInstalledSystemMemory AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now