前三讲的内容讲得很不详细,因为这是之前做的,所以就大概拷贝了一下代码,接下来要实现的几个功能我也是一边学习,一边做的,所以会讲得稍微详细一点。
获得当前存储信息要用到的函数
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 partial class MemoryStatus : Form { public struct MEMORYINFO { public int dwLength; public int dwMemoryLoad; public int dwTotalPhys; public int dwAvailPhys; public int dwTotalPageFile; public int dwAvailPageFile; public int dwTotalVirtual; public int dwAvailVirtual; }; 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); }
