事先说明一下,如果有看过第一篇的,这篇基本上可以不用看了,因为这篇95%的内容是从第一篇抠下来的,单独写这篇文章的目的是为了让这个系列的文章更完整一点,还请各位看官不要扔砖头啊。。哈哈
开工~~~~
一样的,效果图先上,要获取的信息如图所示:总的物理内存,可用物理内存,总的虚拟内存,可用虚拟内存,页面文件空间,可用页面文件空间
![](https://i-blog.csdnimg.cn/blog_migrate/97369c3fa1106b71e3110cb6c78172fe.png)
同样的,需要一个类,命名为:MemoryInfo,类图如下:
![](https://i-blog.csdnimg.cn/blog_migrate/02fc6ceccde6e94512854ad4a770309a.png)
MemoryInfo
public class MemoryInfo
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
总的物理内存#region 总的物理内存
string strTotalVisibleMemorySize = string.Empty; //总的物理内存
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string TotalVisibleMemorySize
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strTotalVisibleMemorySize; }
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strTotalVisibleMemorySize = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
可用物理内存#region 可用物理内存
string strFreePhysicalMemory = string.Empty; //可用物理内存
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string FreePhysicalMemory
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strFreePhysicalMemory; }
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strFreePhysicalMemory = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
总的虚拟内存#region 总的虚拟内存
string strTotalVirtualMemorySize = string.Empty; //总的虚拟内存
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string TotalVirtualMemorySize
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strTotalVirtualMemorySize; }
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strTotalVirtualMemorySize = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
可用虚拟内存#region 可用虚拟内存
string strFreeVirtualMemory = string.Empty; //可用虚拟内存
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string FreeVirtualMemory
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strFreeVirtualMemory; }
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strFreeVirtualMemory = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
页面文件大小#region 页面文件大小
string strSizeStoredInPagingFiles = string.Empty; //页面文件大小
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string SizeStoredInPagingFiles
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strSizeStoredInPagingFiles; }
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strSizeStoredInPagingFiles = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
可用页面文件大小#region 可用页面文件大小
string strFreeSpaceInPagingFiles = string.Empty;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string FreeSpaceInPagingFiles
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strFreeSpaceInPagingFiles; }
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strFreeSpaceInPagingFiles = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public void GetMemoryInfo()
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//实例化一个ManagementClass类,并将Win32_OperatingSystem作为参数传递进去,
//这样就可以查询Win32_OperatingSystem这个类里面的一些信息了。
ManagementClass mClass = new ManagementClass("Win32_OperatingSystem");
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//获取Win32_OperatingSystem这个类的所有实例
ManagementObjectCollection moCollection = mClass.GetInstances();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//对Win32_OperatingSystem这个类进行遍历
foreach (ManagementObject mObject in moCollection)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
TotalVisibleMemorySize = ((ulong)mObject["TotalVisibleMemorySize"] / 1024.0 / 1024).ToString("#0.00") + "G"; //获取总的物理内存
FreePhysicalMemory = ((ulong)mObject["FreePhysicalMemory"] / 1024.0 / 1024).ToString("#0.00") + "G"; //获取可用物理内存
TotalVirtualMemorySize = ((ulong)mObject["TotalVirtualMemorySize"] / 1024.0 / 1024).ToString("#0.00") + "G"; //获取总的虚拟内存
FreeVirtualMemory = ((ulong)mObject["FreeVirtualMemory"] / 1024.0 / 1024).ToString("#0.00") + "G"; //获取可用虚拟内存
SizeStoredInPagingFiles = ((ulong)mObject["SizeStoredInPagingFiles"] / 1024.0 / 1024).ToString("#0.00") + "G"; //获取页面文件大小
FreeSpaceInPagingFiles = ((ulong)mObject["FreeSpaceInPagingFiles"] / 1024.0 / 1024).ToString("#0.00") + "G"; //获取可用页面文件大小
}
}
}
然后在HostPerformance添加一个窗体,命名为:MemoryInfoForm,代码如下:
MemoryInfo Form
public partial class MemoryInfoForm : Form
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
public MemoryInfoForm()
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
InitializeComponent();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ComputerInfo.MemoryInfo memoryInfo = new ComputerInfo.MemoryInfo();
private void MemoryInfoForm_Load(object sender, EventArgs e)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
memoryInfo.GetMemoryInfo();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
定义一些需要用到的项#region 定义一些需要用到的项
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviTotalVisibleMemorySize = new ListViewItem(new string[]
{ "总的物理内存", memoryInfo.TotalVisibleMemorySize });
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviFreePhysicalMemory = new ListViewItem(new string[]
{ "可用物理内存", memoryInfo.FreePhysicalMemory });
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviTotalVirtualMemorySize = new ListViewItem(new string[]
{ "总的虚拟内存", memoryInfo.TotalVirtualMemorySize });
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviFreeVirtualMemory = new ListViewItem(new string[]
{ "可用虚拟内存", memoryInfo.FreeVirtualMemory });
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviSizeStoredInPagingFiles = new ListViewItem(new string[]
{ "页面文件空间", memoryInfo.SizeStoredInPagingFiles });
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviFreeSpaceInPagingFiles = new ListViewItem(new string[]
{ "可用页面文件空间", memoryInfo.FreeSpaceInPagingFiles });
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
将项添加到ListView控件里面#region 将项添加到ListView控件里面
lvMemory.Items.Add(lviTotalVisibleMemorySize);
lvMemory.Items.Add(lviFreePhysicalMemory);
lvMemory.Items.Add(lviTotalVirtualMemorySize);
lvMemory.Items.Add(lviFreeVirtualMemory);
lvMemory.Items.Add(lviSizeStoredInPagingFiles);
lvMemory.Items.Add(lviFreeSpaceInPagingFiles);
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ContractedSubBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
设置ListView的样式以及列#region 设置ListView的样式以及列
lvMemory.View = View.Details;
lvMemory.Columns.Add("项", 150);
lvMemory.Columns.Add("值", 100);
lvMemory.FullRowSelect = true;
lvMemory.GridLines = true;
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
timer1.Enabled = true;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private void timer1_Tick(object sender, EventArgs e)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
lvMemory.Items[1].SubItems[1].Text =memoryInfo.FreePhysicalMemory;
lvMemory.Items[3].SubItems[1].Text = memoryInfo.FreeVirtualMemory;
lvMemory.Items[5].SubItems[1].Text = memoryInfo.SizeStoredInPagingFiles;
}
}
至此,内存信息的小程序就完成了,不过,在这过程中我发现了一个奇怪的东西,上面有获取到了一个“总的虚拟内存”这个东东,但是,我看那个数据好像不太正确,因为我系统设置的虚拟内存只有4G多,如图所示,
![](https://i-blog.csdnimg.cn/blog_migrate/8540bda75ae0501133cc7b397fec2f35.png)
![](https://i-blog.csdnimg.cn/blog_migrate/703d2875abd72a0410abc6623c44941c.png)
然而在“开始--程序--附件--系统工具--系统信息”里面显示的数据跟我获得的数据时一样的,所以对于这个数据我有点困惑,不知道哪位朋友了解其中的玄机呢,恳请告诉我下,谢谢。
未完,待续~~~~![](https://www.cnblogs.com/Emoticons/baimantou/202015214.gif)