As you may know, Win_Memory_Info() is supposed to be able to return the total amount of RAM a computer has. However, for that purpose it only works on Windows XP machines, not on Win7 or Win8. As the "Win" prefix in Alpha indicates, this function makes use of an MS Windows function and it is the MS function that does not work in Win 7 or 8.
Below is an alternative function that works on XP, Win7 and Win8 (but only returns total memory). For those who may not know it is even possible, note that my function is a 2 in 1 function, i.e., the main function contains a 2nd function that is used by the main one (the 2nd one uses a Windows function). The main (top) function is really there only to convert bytes into gigabytes, something that could have been done in the 2nd function (I have my reasons to keep them separate but it is not a necessity). For the top function I have not used a "Win" prefix (Z_Win instead) because I think Alpha reserves Win_ for functions that use Windows functions and returns the raw windows information, which for memory is always in bytes.
I realize that I may be the only one in the Alpha world that used to use Win_Memory_Info() to get total memory, but I'm sharing this anyway.
Raymond Lyons
Below is an alternative function that works on XP, Win7 and Win8 (but only returns total memory). For those who may not know it is even possible, note that my function is a 2 in 1 function, i.e., the main function contains a 2nd function that is used by the main one (the 2nd one uses a Windows function). The main (top) function is really there only to convert bytes into gigabytes, something that could have been done in the 2nd function (I have my reasons to keep them separate but it is not a necessity). For the top function I have not used a "Win" prefix (Z_Win instead) because I think Alpha reserves Win_ for functions that use Windows functions and returns the raw windows information, which for memory is always in bytes.
I realize that I may be the only one in the Alpha world that used to use Win_Memory_Info() to get total memory, but I'm sharing this anyway.
Raymond Lyons
Code:
'Date Created: 28-Apr-2013 05:59:40 PM 'Last Updated: 28-Apr-2013 10:44:33 PM 'Created By : Ray lyons 'Updated By : Ray Lyons FUNCTION Z_Win_Total_Ram AS N () 'Description:Get total Ram for this computer in Gigabyes dim ptr as P dim Ram_in_kb as n ptr=Win_physical_memory() Ram_in_kb=ptr.TotalPhysicalMemory Z_Win_Total_Ram=Ram_in_kb/(1024*1024)/1024 END FUNCTION '*****Function below used by one above***no need to separate them or use********** '*****local variables. It can just be part of the above function in the Control Panel***** FUNCTION Win_Physical_Memory AS P (computer = "." as c) 'DESCRIPTION:Retrieve the computer's physical memory in bytes dim objWMIService as p dim colItems as p dim objItem as p if computer = "" computer = "." end if on error resume next objWMIService = ole.GetObject("winmgmts:" + chr(92) + chr(92) + computer + "\root\CIMV2") colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem") For Each objItem In colItems Win_Physical_Memory.TotalPhysicalMemory=objItem.TotalPhysicalMemory Next end function
Comment