电脑检测,相关代码 笔记KKK

#region (系统检测部分)定义
        //CPU频率 单位:hz
        protected string CpuMHZ;
        //总共的内存  单位:M
        public string CpuInfo;
        //总共的内存  单位:M
        public string CpuInfo_user;
        //硬盘
        private delegate void dAddControl();
        //声明赋值
        private dAddControl myAddControl = null;
        //全局实例窗体
        frmCA frm;
        #endregion

 

 

 

 

 


            #region (系统监测部分)检测加载
            #region 先行隐藏文字控件等待加载
            this.lbl_neicun.Visible = false;
            this.lbl_xitong.Visible = false;
            this.lbl_chuliqi.Visible = false;
            this.lbl_worldtopdf.Visible = false;
            this.label_pdf.Visible = false;
            this.label_ie.Visible = false;
            this.label_flash.Visible = false;
            this.label10.Visible = false;
            this.label11.Visible = false;
            this.label16.Visible = false;
            this.label14.Visible = false;
            this.label19.Visible = false;
            this.label20.Visible = false;
            this.label21.Visible = false;
            #endregion
            #region  页面所有滚动轮的加载启动
            //页面圆圈滚动图
            loadingCircle1.Active = true;
            loadingCircle3.Active = true;
            loadingCircle2.Active = true;
            loadingCircle4.Active = true;
            loadingCircle5.Active = true;
            loadingCircle6.Active = true;
            loadingCircle7.Active = true;
            loadingCircle8.Active = true;
            loadingCircle9.Active = true;
            loadingCircle10.Active = true;
            loadingCircle11.Active = true;
            loadingCircle12.Active = true;
            loadingCircle13.Active = true;
            loadingCircle14.Active = true;
            #endregion

            //硬盘读取
            myAddControl = new dAddControl(addControl);
            Task.Factory.StartNew(diskInfo);
            #region 文字控件赋值

            #region 检测注册表是否安装转换PDF组件
            Task.Factory.StartNew(() =>
            {
                //是否存在该组件 PDF注册表是否存在
                if (IsRegeditExit("{3A85969E-7C6E-41CB-B7DC-812A0A0C5FD8}"))
                {
                    // 赋值是
                    this.label_pdf.Text = "是";
                    this.loadingCircle4.Visible = false;
                    this.label_pdf.Visible = true;
                }
                else
                {
                    //赋值否
                    this.label_pdf.Text = "否";
                    this.label_pdf.ForeColor = System.Drawing.Color.Maroon;
                    this.loadingCircle4.Visible = false;
                    this.label_pdf.Visible = true;
                }
            });
            #endregion

            #region IE版本号
            // 检查IE版本号
            string verIE = (new WebBrowser()).Version.ToString();
            // 赋值
            this.label_ie.Text = verIE;
            this.loadingCircle5.Visible = false;
            this.label_ie.Visible = true;
            #endregion

            #region 最大内存
            //内存最大/内存使用的 集合类方法取值,得到根据指定的Key行到Value
            Dictionary<string, string> myDictionary = GetMemoryInfo();
            //内存最大
            string memorySize = myDictionary["memorySize"];
            //赋值
            this.lbl_neicun.Text = Convert.ToInt32(memorySize) / 1000 + "(G)内存";
            //总共的内存  单位:M
            //隐藏和显示
            this.loadingCircle1.Visible = false;
            this.lbl_neicun.Visible = true;
            #endregion

            #region 获取系统信息
            string systemName = Banbens();
            //赋值
            this.lbl_xitong.Text = systemName;
            //系统版本信息
            //隐藏和显示
            this.loadingCircle2.Visible = false;
            this.lbl_xitong.Visible = true;
            #endregion

            #region 处理器信息
            //处理器信息
            //CPU信息
            CpuInfo = GetCpuInfo();
            //赋值
            this.lbl_chuliqi.Text = CpuInfo;
            //隐藏和显示
            this.loadingCircle3.Visible = false;
            this.lbl_chuliqi.Visible = true;
            #endregion

            #region winform检测是否安装了flash

            // winform检测是否安装了flash
            RegistryKey keyroot = Registry.ClassesRoot;
            // 安装了flash的注册表
            string flashkey = @"CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000}";
            RegistryKey rkFlash = keyroot.OpenSubKey(flashkey);
            if (rkFlash == null)
            {
                //赋值
                this.label_flash.Text = "未安装";
                //隐藏和显示
                this.loadingCircle6.Visible = false;
                this.label_flash.Visible = true;
                //System.Diagnostics.Process.Start(Application.StartupPath + "\\flash10.exe");
            }
            else
            {

                //赋值
                this.label_flash.Text = "已安装";
                //隐藏和显示
                this.loadingCircle6.Visible = false;
                this.label_flash.Visible = true;
            }
            #endregion
            #endregion

            //线程组
            Task.Factory.StartNew(() =>
            {
                #region 图片压缩速度 5M测评速率为准
                //打开文件
                Bitmap Test_img = Properties.Resources.Test_zip;
                MemoryStream stream = new MemoryStream();
                //保存文件格式为文件流
                Test_img.Save(stream, ImageFormat.Png);
                //Stopwatch 方法监控耗时
                Stopwatch sw = new Stopwatch();
                //开始计时
                sw.Start();
                CompressImage(stream, ImageFormat.Png);
                //停止计时
                sw.Stop();
                //时间毫秒
                var ms = sw.ElapsedMilliseconds;
                this.label16.Text = "压缩速度 5M最大耗时约" + Convert.ToString(ms) + "毫秒";
                this.label14.Text = "压缩速度 10M最大耗时约" + Convert.ToString(ms * 2) + "毫秒";
                this.label21.Text = "压缩速度 100M最大耗时约" + (ms * 20 / 1000).ToString("f2") + "秒";
                this.label16.Visible = true;
                this.loadingCircle9.Visible = false;
                this.label14.Visible = true;
                this.loadingCircle10.Visible = false;
                this.label21.Visible = true;
                this.loadingCircle13.Visible = false;
                #endregion
                #region  上传文件时间
                //指定地点访问该地址
                PingReply reply = GetSpeed("180.97.33.108");
                this.label10.Text = "上传数据 ICMP 5M最大耗时约" + Convert.ToString(reply.RoundtripTime * 3413 / 2 / 1000) + "秒";
                this.label11.Text = "上传数据 ICMP 10M最大耗时约" + Convert.ToString(reply.RoundtripTime * 6826 / 2 / 1000) + "秒";
                this.label20.Text = "上传数据 ICMP 100M最大耗时约" + Convert.ToString(reply.RoundtripTime * 68260 / 2 / 1000 / 60) + "分钟";
                this.label19.Text = "上传数据 ICMP 300M最大耗时约" + Convert.ToString(reply.RoundtripTime * 202780 / 2 / 1000 / 60) + "分钟";
                this.label10.Visible = true;
                this.loadingCircle7.Visible = false;
                this.label11.Visible = true;
                this.loadingCircle8.Visible = false;
                this.label20.Visible = true;
                this.loadingCircle12.Visible = false;
                this.label19.Visible = true;
                this.loadingCircle11.Visible = false;
                #endregion
                #region PDF打开速度 20M(5M*4次)测评速率为准
                // 打开文件
                byte[] FiveMworld = Properties.Resources.TextWord;
                // Stopwatch 方法监控耗时
                Stopwatch pdfTime = new Stopwatch();
                // 开始计时
                pdfTime.Start();
                // Word转PDF
                EB.Common.Tools.AsposeWordUtil.WordToPdf(FiveMworld);
                //停止计时
                pdfTime.Stop();
                //时间毫秒
                var pdfTimems = pdfTime.ElapsedMilliseconds;
                if (this.IsHandleCreated)
                {
                    // 委托
                    this.Invoke(new Action(() =>
                    {
                        this.lbl_worldtopdf.Text = "约为" + Convert.ToString(pdfTimems * 4 / 1000) + "秒";
                        this.lbl_worldtopdf.Visible = true;
                        this.loadingCircle14.Visible = false;
                    }));
                }
                #endregion
            });
            #endregion

 

 

 

 

 

 

 

 

  #region (系统检测部分)检测方法

        #region 硬盘使用情况
        private void diskInfo()
        {
            try
            {
                //方法查询硬盘使用情况
                gbDisks.Invoke(myAddControl);
            }
            catch
            {
                Thread.Sleep(2000);
            }

        }
        #endregion

        #region 硬盘使用情况自动增加控件
        private void addControl()
        {
            try
            {
                DriveInfo[] driveInfos = DriveInfo.GetDrives();
                int x = 9;
                int y = 20;
                foreach (DriveInfo driveInfo in driveInfos)
                {
                    Label lb = new Label();
                    lb.Text = driveInfo.Name;
                    lb.Size = new Size(25, 15);
                    lb.Location = new Point(x, y);
                    Label txt = new Label();
                    //TextBox txt = new TextBox();
                    //硬盘使用情况自动增加
                    txt.Location = new Point(lb.Location.X + 30, lb.Location.Y - 6);
                    //大小
                    txt.Size = new Size(200, 30);
                    //内容
                    txt.Text = ((float)driveInfo.AvailableFreeSpace / 1024 / 1024 / 1024).ToString() + "G/" + ((float)driveInfo.TotalSize / 1024 / 1024 / 1024).ToString() + "G";
                    //样式
                    txt.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
                    gbDisks.Controls.Add(lb);
                    gbDisks.Controls.Add(txt);
                    //位置
                    y += 30;
                    gbDisks.Size = new Size(gbDisks.Size.Width, gbDisks.Size.Height + 5);
                }
            }
            catch
            {

            }
        }
        #endregion

        #region IP测速
        /// <summary>
        /// IP测速
        /// </summary>
        /// <param name="ip">IP地址</param>
        /// <returns></returns>
        public PingReply GetSpeed(string ip)
        {
            try
            {
                //指定文件传输
                string Txt_speed = Properties.Resources.txt;
                //byte[] b = ReadFile(Txt_speed);
                Ping ping = new Ping();
                PingOptions options = new PingOptions
                {
                    DontFragment = true
                };
                //string data = "测试回执速度";
                byte[] bites = Encoding.UTF8.GetBytes(Txt_speed);
                PingReply reply = ping.Send(ip, 120, bites, options);
                //reply.RoundtripTime往返回送请求并接收相应 ICMP 回送答复消息所用的毫秒数
                return reply;
            }
            catch (Exception)
            {
                return null;
            }
        }
        #endregion

        #region  将filename文件转换成文件流
        //读filename到byte[],将系统文件转换成文件流传输
        private byte[] ReadFile(string fileName)
        {
            FileStream pFileStream = null;
            byte[] pReadByte = new byte[0];
            try
            {
                //打开文件进行读取
                pFileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                BinaryReader r = new BinaryReader(pFileStream);
                //将文件指针设置到文件开
                r.BaseStream.Seek(0, SeekOrigin.Begin);
                pReadByte = r.ReadBytes((int)r.BaseStream.Length);
                //返回文件流
                return pReadByte;
            }
            catch
            {
                return pReadByte;
            }
            finally
            {
                if (pFileStream != null)
                    pFileStream.Close();
            }
        }
        #endregion

        #region 获取磁盘写入读取信息
        /// <summary>
        /// 获取磁盘写入读取信息
        /// </summary>
        public Dictionary<string, string> GetDiskInfo()
        {
            // 读取磁盘
            PerformanceCounter diskReadManage = new PerformanceCounter("PhysicalDisk", "Disk Read Bytes/sec", "_Total");
            // 写入磁盘
            PerformanceCounter diskWriteManage = new PerformanceCounter("PhysicalDisk", "Disk Write Bytes/sec", "_Total");
            //上一次读取磁盘的值
            float diskReadLoad = 0;
            // 上一次写入磁盘的值
            float diskWriteLoad = 0;
            int count = 0;
            while (count < 2)
            {
                // 读取磁盘的数率
                diskReadLoad = diskReadManage.NextValue() / 1024 / 1024;
                // 写入磁盘的数率
                diskWriteLoad = diskWriteManage.NextValue() / 1024 / 1024;
                Console.WriteLine("读取数率 = " + diskReadLoad.ToString("f2") + "M/S");
                Console.WriteLine("写入数率 = " + diskWriteLoad.ToString("f2") + "M/S");
                Thread.Sleep(1000);
                count++;
            }
            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("diskReadLoad", diskReadLoad.ToString("f2"));
            dic.Add("diskWriteLoad", diskWriteLoad.ToString("f2"));
            return dic;
        }
        #endregion

        #region 获取CPU的编号
        /// <summary>
        /// 获取CPU的编号
        /// </summary>
        /// <returns></returns>
        public static string GetCpuID()
        {
            try
            {
                //获取CPU序列号代码 
                string cpuInfo = " ";
                //cpu序列号 
                ManagementClass mc = new ManagementClass("Win32_Processor");
                //查询CPU
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    //查询结果
                    cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
                }
                moc = null;
                mc = null;
                //返回值
                return cpuInfo;
            }
            catch (Exception)
            {
                return "unknow ";
            }
            finally
            {

            }
        }
        #endregion

        #region CPU频率
        /// <summary>
        /// CPU频率 单位:hz
        /// </summary>
        /// <returns></returns>
        public static string[] GetCpuMHZ()
        {
            //查询CPU信息
            ManagementClass mc = new ManagementClass("Win32_Processor");
            //引用方法
            ManagementObjectCollection cpus = mc.GetInstances();
            //CPU使用情况
            string[] mHz = new string[cpus.Count];
            int c = 0;
            //查询CPU的频率
            ManagementObjectSearcher mySearch = new ManagementObjectSearcher("select * from Win32_Processor");
            //循环结果
            foreach (ManagementObject mo in mySearch.Get())
            {
                mHz[c] = mo.Properties["CurrentClockSpeed"].Value.ToString();
                c++;
            }
            mc.Dispose();
            mySearch.Dispose();
            //返回值
            return mHz;
        }
        #endregion

        #region 查询注册列表
        /// <summary>
        /// 查询注册列表
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        private bool IsRegeditExit(string name)
        {
            // Registry类
            // Registry.ClassesRoot 对应于 HKEY_CLASSES_ROOT主键
            // Registry.CurrentUser 对应于HKEY_CURRENT_USER主键
            // Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键
            // Registry.User 对应于 HKEY_USER主键
            // Registry.CurrentConfig 对应于HEKY_CURRENT_CONFIG主键
            // Registry.DynDa 对应于HKEY_DYN_DATA主键
            // Registry.PerformanceData 对应于HKEY_PERFORMANCE_DATA主键
            bool _exit = false;
            string[] subkeyNames;
            //对应于 HKEY_CLASSES_ROOT主键
            RegistryKey hkml = Registry.ClassesRoot;
            //对应于 HKEY_CLASSES_ROOT目录下面的TypeLib类
            RegistryKey software = hkml.OpenSubKey("TypeLib", true);
            //RegistryKey aimdir = software.OpenSubKey("XXX", true);
            subkeyNames = software.GetSubKeyNames();
            foreach (string keyName in subkeyNames)
            {
                if (keyName == name)
                { _exit = true; return _exit; }
            }
            return _exit;
        }
        #endregion

        #region 获取内存信息
        /// <summary>
        /// 获取内存信息
        /// </summary>
        public Dictionary<string, string> GetMemoryInfo()
        {
            // 总内存
            long capacity = 0;
            // 可用内存
            int available = 0;
            // 内存使用率
            float memoryUsageRates = 0;
            //内部查询语句
            ManagementObjectSearcher capacitySearcher =
                new ManagementObjectSearcher("root\\CIMV2",
                "SELECT * FROM Win32_PhysicalMemory");
            foreach (ManagementObject obj in capacitySearcher.Get())
            {
                capacity += Convert.ToInt64(obj["Capacity"]);
            }
            //查询物理内存
            capacity = capacity / 1024 / 1024;
            Console.WriteLine("总物理内存:{0} MB", capacity);
            //内部查询语句
            ManagementObjectSearcher availableSearcher = new ManagementObjectSearcher("root\\CIMV2",
               "SELECT * FROM Win32_PerfFormattedData_PerfOS_Memory");
            //查询值
            foreach (ManagementObject obj in availableSearcher.Get())
            {
                available += Convert.ToInt32(obj.Properties["AvailableMBytes"].Value);
            }
            //可用内存
            Console.WriteLine("总可用内存:{0} MB;", available);
            // 内存使用率
            memoryUsageRates = (float)available / capacity * 100;

            Dictionary<string, string> memoryDic = new Dictionary<string, string>();
            // 总内存
            memoryDic.Add("memorySize", capacity.ToString());
            可用内存
            //memoryDic.Add("memoryUsage", available.ToString());
            内存使用率
            //memoryDic.Add("memoryUsageRates", Math.Round(memoryUsageRates, 2).ToString());
            //方法memoryDic返回集合
            return memoryDic;
        }
        #endregion

        #region 获取CPU信息
        /// <summary>
        /// 获取CPU信息
        /// </summary>
        /// <returns></returns>
        public static string GetCpuInfo()
        {
            //内部查询语句
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\CIMV2", "SELECT * FROM Win32_Processor");
            //循环查询结果
            foreach (ManagementObject obj2 in searcher.Get())
            {
                try
                {
                    return (obj2.GetPropertyValue("Name").ToString() + "," + obj2.GetPropertyValue("CurrentClockSpeed").ToString() + " Mhz," + Environment.ProcessorCount.ToString() + " 个处理器");
                }
                catch
                {
                    continue;
                }
            }
            //返回值
            return "未知";
        }
        #endregion

        #region 图片压缩
        /// <summary>
        /// 图片压缩
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="imageFormat"></param>
        /// <returns></returns>
        public static Stream CompressImage(Stream stream, ImageFormat imageFormat)
        {
            Stream s = new MemoryStream();
            // 画图对象
            Image img;
            Bitmap bmp;
            Graphics grap;
            // 图片的宽高
            int width, height;
            try
            {
                // 从流中获取图片
                img = Image.FromStream(stream);
                //设置图片宽高
                double oldWidth = img.Width;
                double oldHeight = img.Height;

                // 设置象素宽高
                if (oldWidth <= 800.0 || imageFormat == ImageFormat.Emf)
                {
                    //条件成立返回结果
                    width = (int)oldWidth;
                    height = (int)oldHeight;
                }
                else
                {
                    //条件不成立返回结果
                    width = 800;
                    height = (int)(oldHeight / oldWidth * 800);
                }

                // 新建图像
                bmp = new Bitmap(width, height);
                // 重新绘图
                grap = Graphics.FromImage(bmp);
                grap.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                grap.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                // 重新绘图结果
                grap.DrawImage(img, new Rectangle(0, 0, width, height));

                if (imageFormat == ImageFormat.Emf)
                    // 将图片保存到内存流
                    bmp.Save(s, ImageFormat.Png);
                else
                    bmp.Save(s, imageFormat);

                // 释放画图对象
                bmp.Dispose();
                img.Dispose();
                grap.Dispose();

                s.Seek(0, SeekOrigin.Begin);
                //返回结果
                return s;
            }
            //报错返回结果
            catch (Exception) { throw; }

        }
        #endregion

        #region 获取当前系统
        /// <summary>
        /// 当前系统
        /// </summary>
        /// <returns></returns>
        public static string Banbens()
        {
            //内部查询信息
            var name = (from x in new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem").Get().Cast<ManagementObject>()
                        select x.GetPropertyValue("Caption")).FirstOrDefault();
            //返回结果
            return name != null ? name.ToString() : "Unknown";
        }
        #endregion

        #region 点击按钮打开新窗口
        /// <summary>
        /// 按钮点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //方法调用前传值
                ElectronicSignatureUtility esUtil = new ElectronicSignatureUtility();
                if (esUtil.IsErr)
                    //错误弹出提示
                    MessageUtil.ShowError(esUtil.ErrMessage);
                else
                {
                    var sealinfoList = esUtil.GetBindedElectronicSignature();
                    if (!esUtil.IsErr)
                    {
                        // 打开新窗体
                        frm = new frmCA(sealinfoList);
                        frm.Show();
                    }
                    else
                        MessageUtil.ShowTips(esUtil.ErrMessage);
                }
            }
            catch (Exception)
            {
                //错误返回结果
                throw;
            }
        }
        #endregion
        #endregion

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值