C#怎么获得内存物理内存?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
//加入这个命名空间,用于调用系统的DLL
namespace WindowsApplication2
{
public partial class Form1 : Form
{
public struct MEMORYSTATUS1 //这个结构用于获得系统信息
{
internal uint dwLength;
internal uint dwMemoryLoad;
internal uint dwTotalPhys;
internal uint dwAvailPhys;
internal uint dwTotalPageFile;
internal uint dwAvailPageFile;
internal uint dwTotalVirtual;
internal uint dwAvailVirtual;
}
[DllImport("kernel32.dll ")]//调用系统DLL
public static extern void GlobalMemoryStatus(ref MEMORYSTATUS1 lpBuffer); //获得系统DLL里的函数
public Form1()
{
InitializeComponent();
}
private void button5_Click(object sender, EventArgs e)//这个是触发事件的按纽
{
MEMORYSTATUS1 vBuffer = new MEMORYSTATUS1();//实例化结构
GlobalMemoryStatus(ref vBuffer);//给此结构赋值
string useinfo=Convert.ToString(vBuffer.dwAvailPhys);//获得已用内存量
string allinfo=Convert.ToString(vBuffer.dwTotalPhys);//获得内存总量
MessageBox.Show(useinfo + ":" + allinfo);
//显示已用内存量:总内存量
}
}
}
按照这个方法取出了:2110246912,这是什么? --------------------编程问答-------------------- 你不是自己写了吗?已用内存量,2110246912是内存总量。 --------------------编程问答--------------------
不是,是别人写的 --------------------编程问答-------------------- 不需要,用WMI就可以获取。 --------------------编程问答--------------------
WMI? --------------------编程问答--------------------
--------------------编程问答--------------------
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct MEMORYSTATUSEX1 //这个结构用于获得系统信息
{
public uint dwLength;
public uint dwMemoryLoad;
public ulong ullTotalPhys;
public ulong ullAvailPhys;
public ulong ullTotalPageFile;
public ulong ullAvailPageFile;
public ulong ullTotalVirtual;
public ulong ullAvailVirtual;
public ulong ullAvailExtendedVirtual;
}
[DllImport("kernel32.dll ")]//调用系统DLL
public static extern void GlobalMemoryStatusEx(MEMORYSTATUSEX1* lpBuffer); //获得系统DLL里的函数
static void TestMemeory()
{
MEMORYSTATUSEX1 ms;// = new MEMORYSTATUS1()
ms.dwLength = 64;
GlobalMemoryStatusEx(&ms);
Console.WriteLine(ms.ullTotalPhys);
}
其实就是wmic,自己了解一下吧,.net有封装这个东西 --------------------编程问答-------------------- 你这个api调用是对的。useinfo是可用物理内存的大小,allinfo是总的物理内存有多少。
都是以字节为单位进行标记的。可以用。 --------------------编程问答--------------------
不需要,用WMI就可以获取。
WMI?
WMI !
补充:.NET技术 , C#