先秀下效果图。要获取主机信息包括:OS名称、版本、OS 制造商、系统名称、Windows 目录、系统目录、启动设备、区域设置、时区、总的物理内存、可用物理内存、总的虚拟内存、可用虚拟内存和页面文件空间。
本系统计划采用如下的结构(懒得画图,直接用语言描述):一个类库,用于获取计算机的信息。解决方案命名为:ComputerInfo,里面包含一些类,以后每个小功能都会增加一个类,现在刚刚做了获取计算机的信息的类,命名为:SystemInfo,类图如下。然后每个小功能为一个解决方案里面的一个窗体。
![](https://images.cnblogs.com/cnblogs_com/lxcsmallcity/HostPerformance/1/2.PNG)
public class SystemInfo
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
属性#region 属性
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
OS名称#region OS名称
string strOSName = string.Empty; //OS名称
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string OSName
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strOSName; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strOSName = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
OS版本#region OS版本
string strOSVersion = string.Empty; //OS版本
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string OSVersion
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strOSVersion; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strOSVersion = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
OS制造商#region OS制造商
string strOSManufacturer = string.Empty; //OS制造商
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string OSManufacturer
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strOSManufacturer; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strOSManufacturer = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
Windows 目录#region Windows 目录
string strWindowsDirectory = string.Empty;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string WindowsDirectory
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strWindowsDirectory; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strWindowsDirectory = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
系统目录#region 系统目录
string strSystemDirectory = string.Empty; //系统目录
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string SystemDirectory
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strSystemDirectory; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strSystemDirectory = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
启动设备#region 启动设备
string strBootDevice = string.Empty; //启动设备
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string BootDevice
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strBootDevice; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strBootDevice = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
地区#region 地区
string strCountry = string.Empty; //地区
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string Country
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strCountry; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strCountry = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
时区#region 时区
string strTimeZone = string.Empty; //时区
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string TimeZone
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strTimeZone; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strTimeZone = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.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
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strTotalVisibleMemorySize; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strTotalVisibleMemorySize = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.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
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strFreePhysicalMemory; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strFreePhysicalMemory = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.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
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strTotalVirtualMemorySize; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strTotalVirtualMemorySize = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.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
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strFreeVirtualMemory; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strFreeVirtualMemory = value; }
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.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
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return strSizeStoredInPagingFiles; }
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ strSizeStoredInPagingFiles = value; }
}
#endregion
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
构造函数#region 构造函数
public SystemInfo()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
GetSystemInfo();
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
GetSystemInfo#region GetSystemInfo
private void GetSystemInfo()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
OSVersion = Environment.OSVersion.ToString(); //通过系统自带的Environment这个类来获取 系统的版本
SystemName = Environment.MachineName; //通过系统自带的Environment这个类来获取 系统的名称
Country = System.Globalization.CultureInfo.CurrentCulture.DisplayName; //获取区域设置
TimeZone = System.TimeZone.CurrentTimeZone.StandardName; //获取时区设置
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.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)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
OSName = mObject["Caption"].ToString(); //获取OS 名称
OSManufacturer = mObject["Manufacturer"].ToString(); //获取 OS 制造商
SystemName = mObject["CSName"].ToString(); //获取系统名称
WindowsDirectory = mObject["WindowsDirectory"].ToString(); //获取Windows 目录
SystemDirectory = mObject["SystemDirectory"].ToString(); //获取系统目录
BootDevice = mObject["BootDevice"].ToString(); //获取启动设备
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"; //获取页面文件大小
}
}
#endregion
}
再启动一个VS2008 创建一个解决方案命名为:HostPerformance,添加上面那个类库的引用,如下图
![](https://images.cnblogs.com/cnblogs_com/lxcsmallcity/HostPerformance/1/3.PNG)
添加一个窗体,命名为:SystemInfoForm,往窗体里面添加一个ListView控件,代码如下:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
SystemInfo Form
public partial class SystemInfoForm : Form
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
public SystemInfoForm()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
InitializeComponent();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private void SystemInfoForm_Load(object sender, EventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//实例化一个ComputerInfo.SystemInfo类。
ComputerInfo.SystemInfo systemInfo = new ComputerInfo.SystemInfo();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
定义一些需要用到的项#region 定义一些需要用到的项
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviOSName = new ListViewItem(new string[]
{ "OS 名称",systemInfo.OSName});
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviOSVersion = new ListViewItem(new string[]
{ "版本", systemInfo.OSVersion });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviOSManufacturer = new ListViewItem(new string[]
{ "OS 制造商", systemInfo.OSManufacturer });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviSystemName = new ListViewItem(new string[]
{ "系统名称", systemInfo.SystemName });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviWindowsDirectory = new ListViewItem(new string[]
{ "Windows 目录", systemInfo.WindowsDirectory });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviSystemDirectory = new ListViewItem(new string[]
{ "系统目录", systemInfo.SystemDirectory });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviBootDevice = new ListViewItem(new string[]
{ "启动设备", systemInfo.BootDevice });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviCountry = new ListViewItem(new string[]
{ "区域设置", systemInfo.Country });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviTimeZone = new ListViewItem(new string[]
{ "时区", systemInfo.TimeZone });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviTotalVisibleMemorySize = new ListViewItem(new string[]
{ "总的物理内存", systemInfo.TotalVisibleMemorySize });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviFreePhysicalMemory = new ListViewItem(new string[]
{ "可用物理内存", systemInfo.FreePhysicalMemory });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviTotalVirtualMemorySize = new ListViewItem(new string[]
{ "总的虚拟内存", systemInfo.TotalVirtualMemorySize });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviFreeVirtualMemory = new ListViewItem(new string[]
{ "可用虚拟内存", systemInfo.FreeVirtualMemory });
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ListViewItem lviSizeStoredInPagingFiles = new ListViewItem(new string[]
{ "页面文件空间", systemInfo.SizeStoredInPagingFiles });
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
将项添加到ListView控件里面#region 将项添加到ListView控件里面
lvHostInformation.Items.Add(lviOSName);
lvHostInformation.Items.Add(lviOSVersion);
lvHostInformation.Items.Add(lviOSManufacturer);
lvHostInformation.Items.Add(lviSystemName);
lvHostInformation.Items.Add(lviWindowsDirectory);
lvHostInformation.Items.Add(lviSystemDirectory);
lvHostInformation.Items.Add(lviBootDevice);
lvHostInformation.Items.Add(lviCountry);
lvHostInformation.Items.Add(lviTimeZone);
lvHostInformation.Items.Add(lviTotalVisibleMemorySize);
lvHostInformation.Items.Add(lviFreePhysicalMemory);
lvHostInformation.Items.Add(lviTotalVirtualMemorySize);
lvHostInformation.Items.Add(lviFreeVirtualMemory);
lvHostInformation.Items.Add(lviSizeStoredInPagingFiles);
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
设置ListView的样式以及列#region 设置ListView的样式以及列
lvHostInformation.View = View.Details;
lvHostInformation.Columns.Add("项",150);
lvHostInformation.Columns.Add("值",300);
lvHostInformation.FullRowSelect = true;
lvHostInformation.GridLines = true;
#endregion
}
} 至此,获取计算机信息的小功能就做完了,代码都已经贴上来了,大家可以自己弄到VS2008里面试试。
未完,待续~~下期预告:2.获取性能信息--CPU