前三讲的内容讲得很不详细,因为这是之前做的,所以就大概拷贝了一下代码,接下来要实现的几个功能我也是一边学习,一边做的,所以会讲得稍微详细一点。
获得当前存储信息要用到的函数
BOOL WINAPI GlobalMemoryStatus(__inout LPMEMORYSTATUSEX lpBuffer);
其中,lpBuffer是一个MEMORYSTATUS结构体,可以获取当前的存储信息。
typedef struct _MEMORYSTATUS {
DWORD dwLength;
DWORD dwMemoryLoad;
DWORD dwTotalPhys;
DWORD dwAvailPhys;
DWORD dwTotalPageFile;
DWORD dwAvailPageFile;
DWORD dwTotalVirtual;
DWORD dwAvailVirtual;
} MEMORYSTATUS, *LPMEMORYSTATUS;
public MemoryStatus()
{
InitializeComponent();
initial();
}
private void menuItem1_Click(object sender, EventArgs e)
{
this.Close();
}
private void initial() //初始化,获取存储信息
{
MEMORYINFO mms; //定义的内存信息结构体
mms = new MEMORYINFO();
GlobalMemoryStatus(ref mms);
// totalVirtual.Text = mms.dwMemoryLoad.ToString()+"% 的内存正在使用";
totalVirtual.Text = ((float)mms.dwTotalVirtual / 1024 / 1024).ToString("0.00") + " MB";
totalPhys.Text = ((float)mms.dwTotalPhys / 1024 / 1024).ToString("0.00") + " MB";
availPhys.Text = ((float)mms.dwAvailPhys / 1024 / 1024).ToString("0.00") + " MB";
availVirtual.Text = ((float)mms.dwAvailVirtual / 1024 / 1024).ToString("0.00") + " MB";
usePhys.Text = (((float)mms.dwTotalPhys - mms.dwAvailPhys) / 1024 / 1024).ToString("0.00") + " MB";
useVirtual.Text = (((float)mms.dwTotalVirtual - mms.dwAvailVirtual) / 1024 / 1024).ToString("0.00") + " MB";
}
[DllImport("coredll.dll", SetLastError = true)]
public static extern void GlobalMemoryStatus(ref MEMORYINFO buffer);
}