c# winform cpuhelper

 public static class HardwareHelper
    {
        const int interval = 400;
        /// <summary>
        /// 磁盘使用情况
        /// </summary>
        /// <returns></returns>
        public static string GetDiskUsage()
        {
            StringBuilder sb = new StringBuilder();
            DriveInfo[] drives = DriveInfo.GetDrives();
            int mb = 1024 * 1024;
            foreach (DriveInfo drive in drives)
            {
                if (drive.DriveType == DriveType.Fixed || drive.DriveType == DriveType.Removable)
                {
                    long total = drive.TotalSize / mb;
                    long totalgb = total / 1024;
                    long totalFreeSize = drive.TotalFreeSpace / mb;
                    long totalFreeSizegb = totalFreeSize / 1024;
                    long freeSpace = drive.AvailableFreeSpace / mb;
                    long freeSpacegb = freeSpace / 2014;
                    sb.AppendLine(drive.Name + "(" + drive.VolumeLabel + ")");
                    string format = string.Format("空间总量:{0} MB({1}GB)", total, totalgb);
                    sb.AppendLine(format);
                    format = string.Format("空闲空间:{0} MB({1}GB)", totalFreeSize, totalFreeSizegb);
                    sb.AppendLine(format);
                    format = string.Format("可用空闲空间:{0} MB({1}GB)", freeSpace, freeSpacegb);
                    sb.AppendLine(format);
                }
            }
            return sb.ToString();
        }

        /// <summary>
        /// 获取磁盘的读写速率
        /// </summary>
        /// <returns></returns>
        public static string GetDiskSpeed()
        {
            StringBuilder sb = new StringBuilder();
            PerformanceCounter diskp = new PerformanceCounter("PhysicalDisk", "Disk Read Bytes/sec", "_Total");
            Thread.Sleep(interval);
            float v1 = diskp.NextValue();
            Thread.Sleep(interval);
            float v2 = diskp.NextValue();
            Thread.Sleep(interval);
            float v3 = diskp.NextValue();
            Thread.Sleep(interval);
            float v4 = diskp.NextValue();
            v4 = (v1 + v2 + v3 + v4) / 4;
            sb.AppendLine(string.Format("磁盘读写速率:{0}", v4));

            return sb.ToString();
        }

        /// <summary>
        /// 获取硬盘信息
        /// </summary>
        /// <returns></returns>
        public static string GetDiskInfo()
        {
            StringBuilder sb = new StringBuilder();
            ManagementClass mgmtClass = new ManagementClass("Win32_DiskDrive");
            ManagementObjectCollection mgmtObjCol = mgmtClass.GetInstances();
            foreach (ManagementObject MGMTOBJ in mgmtObjCol)
            {
                Console.WriteLine(MGMTOBJ.ToString());
                foreach (PropertyData property in MGMTOBJ.Properties)
                {
                    sb.AppendLine("Property Name: " + property.Name + "\tProperty Value: " + property.Value);
                }
            }
            return sb.ToString();
        }

        /// <summary>
        /// cpu使用率
        /// </summary>
        /// <returns></returns>
        public static string GetCPUUsage()
        {
            PerformanceCounter cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", true);
            Thread.Sleep(interval);
            float v1 = cpuCounter.NextValue();
            Thread.Sleep(interval);
            float v2 = cpuCounter.NextValue();
            Thread.Sleep(interval);
            float v3 = cpuCounter.NextValue();
            Thread.Sleep(interval);
            float v4 = cpuCounter.NextValue();
            v4 = (v1 + v2 + v3 + v4) / 4;

            PerformanceCounter pcCpuLoad = new PerformanceCounter("Processor", "% Processor Time", "_Total")
            {
                MachineName = "."
            };
            pcCpuLoad.NextValue();
            Thread.Sleep(1000);
            float CpuLoad = pcCpuLoad.NextValue();
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(string.Format("CPU的使用率:{0}%", CpuLoad));
            sb.AppendLine(string.Format("CPU的使用率v4:{0}%", v4));
            return sb.ToString();
        }

        /// <summary>
        /// cpu info
        /// </summary>
        /// <returns></returns>
        public static string GetCpuInfo()
        {
            StringBuilder sb = new StringBuilder();
            int n = Environment.ProcessorCount;
            sb.AppendLine("计算机名:" + Environment.MachineName + "\t\tCPU核:" + n + "个");//另一种方法
            double? GHz = null;
            using (ManagementClass mc = new ManagementClass("Win32_Processor"))
            {
                foreach (ManagementObject mo in mc.GetInstances())
                    GHz = 0.001 * (UInt32)mo.Properties["CurrentClockSpeed"].Value;
            }
            sb.AppendLine(string.Format("CPU速率:{0}GHz", GHz));
            return sb.ToString();
        }

        /// <summary>
        /// 获取物理内存使用情况
        /// </summary>
        /// <returns></returns>
        public static string GetMemoryUseage()
        {
            // 获取物理内存总大小
            ManagementClass mc = new ManagementClass("Win32_PhysicalMemory");
            ManagementObjectCollection moc = mc.GetInstances();
            double available = 0, capacity = 0;
            foreach (ManagementObject mo in moc)
            {
                double temp = Convert.ToDouble(mo.Properties["Capacity"].Value);
                capacity += Math.Round(temp / 1024 / 1024 / 1024, 1);
            }
            moc.Dispose();
            mc.Dispose();

            //获取内存可用大小
            ManagementClass mc2 = new ManagementClass("Win32_PerfFormattedData_PerfOS_Memory");
            ManagementObjectCollection moc2 = mc2.GetInstances();
            foreach (ManagementObject mo2 in moc2)
            {
                double temp = Convert.ToDouble(mo2.Properties["AvailableMBytes"].Value);
                available += Math.Round(temp / 1024, 1);
            }
            moc2.Dispose();
            mc2.Dispose();

            //PerformanceCounter ramCounter = new PerformanceCounter("Memory", "Available MBytes");
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(string.Format("内存总量:{0}GB\t\t可用量:{1}GB\t\t使用量:{2}GB", capacity, available, capacity - available));
            return sb.ToString();
        }

        /// <summary>  
        /// 获取本机MAC地址  
        /// </summary>  
        /// <returns>本机MAC地址</returns>  
        public static string GetMacAddress()
        {
            try
            {
                string strMac = string.Empty;
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"])
                    {
                        strMac = mo["MacAddress"].ToString();
                    }
                }
                moc.Dispose();
                mc.Dispose();
                return string.Format("本机MAC地址:{0}", strMac);
            }
            catch
            {
                return "unknown";
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值