主机性能监控系统--6.获取磁盘性能信息

      磁盘信息的获取目前只获取磁盘名称,磁盘标卷,磁盘总容量,可用磁盘空间,文件系统。当然,磁盘的信息还有很多,比如硬盘的温度之类的,考虑到技术上的问题,这些暂时不考虑。OK,效果图先上:

      同样的,需要一个类,命名为:DiskInfo,简单说明一下,本次获取信息的方法是采用WMI,用结构体表示各个属性,类图及代码如下:

 

ContractedBlock.gif ExpandedBlockStart.gif DiskInfo
    public class DiskInfo
ExpandedBlockStart.gifContractedBlock.gif    
{
        
public struct DiskInfoStruct
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
public string strDiskName;  //磁盘名称
            public string strVolumeName;  //磁盘标卷
            public long lDiskSize;  //磁盘大小
            public long lDiskFreeSpace;  //可用磁盘空间
            public string strDiskFileSystem;  //文件系统(FAT32,NTFS等)
        }


        
public List<DiskInfoStruct> GetDiskInfo()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            List
<DiskInfoStruct> lDiskInfo = new List<DiskInfoStruct>();
            DiskInfoStruct diskInfoStruct;
            
//实例化一个ManagementClass类,并将Win32_LogicalDisk作为参数传递进去,
            
//这样就可以查询Win32_LogicalDisk这个类里面的一些信息了。
            ManagementClass mClass = new ManagementClass("Win32_LogicalDisk");

            
//获取Win32_LogicalDisk这个类的所有实例
            ManagementObjectCollection moCollection = mClass.GetInstances();

            
//对Win32_OperatingSystem这个类进行遍历
            foreach (ManagementObject mObject in moCollection)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
//判断磁盘是否为固定磁盘,即硬盘
                if (Int32.Parse(mObject["DriveType"].ToString()) == (int)System.IO.DriveType.Fixed)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    diskInfoStruct.strDiskName 
= mObject["Name"].ToString();  //获取磁盘名称
                    diskInfoStruct.strVolumeName = mObject["VolumeName"].ToString();  //获取磁盘标卷
                    diskInfoStruct.lDiskSize = long.Parse(mObject["Size"].ToString());  //获取磁盘大小
                    diskInfoStruct.lDiskFreeSpace = long.Parse(mObject["FreeSpace"].ToString());  //获取磁盘可用空间
                    diskInfoStruct.strDiskFileSystem = mObject["FileSystem"].ToString();  //获取磁盘文件系统  
                    lDiskInfo.Add(diskInfoStruct);
                }

            }

            
return lDiskInfo;
        }

    }

      同样的,新建一个窗体,命名为:DiskInfoForm,布局如效果图所示,代码如下:

 

ContractedBlock.gif ExpandedBlockStart.gif DiskInfo Form
    public partial class DiskInfoForm : Form
ExpandedBlockStart.gifContractedBlock.gif    
{
        
public DiskInfoForm()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            InitializeComponent();
        }


        
private void DiskInfoForm_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            ComputerInfo.DiskInfo diskInfo 
= new ComputerInfo.DiskInfo();
            List
<ComputerInfo.DiskInfo.DiskInfoStruct> lDiskInfo = diskInfo.GetDiskInfo();
            ListViewItem itemDiskInfo;
            
for (int i=0;i<lDiskInfo.Count;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                itemDiskInfo 
= new ListViewItem(lDiskInfo[i].strDiskName+"("+lDiskInfo[i].strVolumeName+")");
                itemDiskInfo.SubItems.Add((lDiskInfo[i].lDiskSize 
/ 1000 / 1000).ToString("0,0"+ "G");
                itemDiskInfo.SubItems.Add((lDiskInfo[i].lDiskFreeSpace 
/ 1000 / 1000).ToString("0,0"+ "G");
                itemDiskInfo.SubItems.Add(lDiskInfo[i].strDiskFileSystem);
                lvDiskInfo.Items.Add(itemDiskInfo);
            }

        }

    }

      以上代码都比较简单,我就不一一解释了,有不懂的可以回复,我会第一时间解答。     

      哈哈,又完成了一个,离终点又近了一步,哈哈。。努力,努力~~

      未完,待续~~~

转载于:https://www.cnblogs.com/lxcsmallcity/archive/2009/11/18/1605643.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值