C#Winform 查看计算机信息:CPU、内存、磁盘、日志

 添加依赖:依赖项---添加项目引用---浏览---浏览查找需要文件

Form1:代码

        查看计算机基本信息:CPU利用率、内存使用、磁盘使用。两个按钮跳转日志

using System.Diagnostics;
using System.Threading;
using System.Management;
using System.Runtime.InteropServices;
using System.Security.Cryptography.Xml;
using System.Diagnostics.Tracing;
using System.Drawing;
using System.Collections.Generic;
using System;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using System.Text;
using ListView = System.Windows.Forms.ListView;
using Microsoft.VisualBasic.Logging;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
using System.Security.Cryptography;
//using System.Diagnostics.Tracing.Session;

namespace WinForms1
{
    public partial class Form1 : System.Windows.Forms.Form
    {
        PerformanceCounter cpuCounter;
        public Form1()
        {
            cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
            InitializeComponent();
            InitializeCpu();
            InitializeNEICUN();
            InitializeCIPAN();
        }
        //获取CPU利用率
        private void InitializeCpu()
        {
            float cpu = cpuCounter.NextValue();
            String num = cpu.ToString("0.0");
            lb_cpu.Text = num + " %";
        }
        //内存使用量
        private void InitializeNEICUN()
        {
            Microsoft.VisualBasic.Devices.Computer myInfo = new Microsoft.VisualBasic.Devices.Computer();
            //获取物理内存总量
            W_zong.Text = (myInfo.Info.TotalPhysicalMemory / 1024 / 1024 / 1024).ToString("0.0") + " GB";
            //获取可用物理内存总量
            W_ke.Text = (myInfo.Info.AvailablePhysicalMemory / 1024 / 1024 / 1024).ToString("0.0") + " GB";
        }
        //获取磁盘使用情况
        private void InitializeCIPAN()
        {
            foreach (DriveInfo drive in DriveInfo.GetDrives())
            {
                if (drive.IsReady)
                {
                    cipan_make.Text = drive.Name;
                    Ci_zong.Text = drive.TotalSize / 1024 / 1024 / 1024 + " GB";
                    Ci_yi.Text = (drive.TotalSize - drive.AvailableFreeSpace) / 1024 / 1024 / 1024 + " GB";
                    Ci_ke.Text = drive.AvailableFreeSpace / 1024 / 1024 / 1024 + " GB";
                }
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer.Text = System.DateTime.Now.ToString();
            InitializeCpu();
            InitializeNEICUN();
            InitializeCIPAN();
            //Thread.Sleep(1000);
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start();
            //Thread.Sleep(1000);
            //判断操作系统位数
            if (Environment.Is64BitOperatingSystem)
            {
                sys_weishu.Text = "64bit.";
            }
            else
            {
                sys_weishu.Text = "32bit.";
            }
            //richTextBox1.AppendText(Environment.NewLine);
            name.Text = SystemInformation.ComputerName.ToString();//计算机名
            OS.Text = Environment.OSVersion.Platform.ToString();//操作系统
            banben.Text = Environment.OSVersion.VersionString.ToString();//版本号
            cpu_geshu.Text = Environment.ProcessorCount.ToString();//处理器个数
        }
        // 跳转系统日志
        private void button2_Click(object sender, EventArgs e)
        {
            Form3 f2 = new Form3();
            f2.Show();
        }
        // 跳转应用程序日志
        private void button3_Click(object sender, EventArgs e)
        {
            Form2 f3 = new Form2();
            f3.Show();
        }
         跳转网络交换机 SNMP通讯
        //private void btn_log_MouseDown(object sender, MouseEventArgs e)
        //{
        //    Form4 f = new Form4();
        //    f.Show();
        //}
    }
}

Form1:运行结果

        CPU利用率自动刷新

Form2:代码

        应用程序日志,可以进行查询

using Microsoft.Extensions.Logging;
using Microsoft.VisualBasic.ApplicationServices;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Reflection.Emit;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;

namespace WinForms1
{
    public partial class Form2 : Form
    {
        DataTable dt = new DataTable("Datas");
        DataColumn dc = new DataColumn();
        EventLog eventLog = new EventLog(); //创建日志实例
        public Form2()
        {
            InitializeComponent();
            Task1();//多线程运行
            dataGridView1.ColumnHeaderMouseClick += new DataGridViewCellMouseEventHandler(dataGridView1_ColumnHeaderMouseClick);
        }
        private void Form2_Load(object sender, EventArgs e)
        {
            dataGridView1.Columns[0].Width = 120;
            dataGridView1.Columns[1].Width = 190;
            dataGridView1.Columns[2].Width = 280;    
            dataGridView1.ReadOnly = true;// 设置 DataGridView1 为只读
            //用户不能手动编辑单元格的内容
            dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
            // 设定包括Header和所有单元格的列宽自动调整
            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
            //根据数据内容自动调整行高
            dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
            // 设置用户不能手动给 DataGridView1 添加新行 
            dataGridView1.AllowUserToAddRows = false;
        }
        //自动在每行前面生成索引
        private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
                //自动编号,与数据无关
                Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, dataGridView1.RowHeadersWidth - 4, e.RowBounds.Height);
                TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), dataGridView1.RowHeadersDefaultCellStyle.Font, rectangle, dataGridView1.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
        }
        private async Task Task1()
        {
            dc.AutoIncrement = true;//自动增加
            dc.AutoIncrementSeed = 1;//起始为1
            dc.AutoIncrementStep = 1;//步长为1
            dc.AllowDBNull = false;//是否允许空值
            //添加列
            dt.Columns.Add("级别", typeof(string));
            dt.Columns.Add("时间和日期", typeof(string));
            dt.Columns.Add("名称", typeof(string));
            dt.Columns.Add("内容", typeof(string));
            dataGridView1.DataSource = dt;
            eventLog.Log = "Application";//打开应用程序日志Application
            EventLogEntryCollection collection = eventLog.Entries; //获取可遍历collection
            label2.Text = $"一共有:{collection.Count}记录";
            //string resul = "";
            foreach (EventLogEntry item in collection)//遍历查询出来的数据
            {
                //添加行
                DataRow newRow = dt.NewRow();
                newRow["级别"] = item.EntryType.ToString();//设置第一行显示的数据
                newRow["时间和日期"] = item.TimeWritten.ToString();//绑定剩余列的数据
                newRow["名称"] = item.UserName;
                newRow["内容"] = item.Message;
                //一定记得行数据创建完毕后添加到列表中
                dt.Rows.Add(newRow);
            }
        }
        // 在事件处理程序中获取单击的列的名称和排序方向,并使用该信息来筛选和排序数据。
        private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            string columnName = dataGridView1.Columns[e.ColumnIndex].Name;
            ListSortDirection sortDirection = ListSortDirection.Ascending;
            if (dataGridView1.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection == SortOrder.Ascending)
            {
                sortDirection = ListSortDirection.Descending;
            }
            dataGridView1.Sort(dataGridView1.Columns[columnName], sortDirection);
            // 筛选数据
            string filterExpression = string.Format("{0} LIKE '%{1}%'", columnName, textBox1.Text);
            (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = filterExpression;
            dataGridView1.Update();
            label2.Text = "一共有" + dataGridView1.Rows.Count.ToString() + "条记录";
        }
    }
}

Form2:运行

        textBox1可以进行查询,动态显示记录

        右键标题行升序降序排列

Form3:代码

        系统日志

using Microsoft.Extensions.Logging;
using Microsoft.VisualBasic.ApplicationServices;
using Microsoft.VisualBasic.Devices;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Diagnostics;
using System.Diagnostics.Metrics;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Button;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
using CheckBox = System.Windows.Forms.CheckBox;
using ComboBox = System.Windows.Forms.ComboBox;

namespace WinForms1
{
    public partial class Form3 : Form
    {
        EventLog eventLog = new EventLog(); //创建日志实例
        DataTable DT = new DataTable("Datas");
        DataColumn dc = new DataColumn();
        public Form3()
        {
            Control.CheckForIllegalCrossThreadCalls = false;
            InitializeComponent();
            Task1();//多线程运行;
            dataGridView1.ColumnHeaderMouseClick += new DataGridViewCellMouseEventHandler(dataGridView1_ColumnHeaderMouseClick);
        }
        private void Form3_Load(object sender, EventArgs e)
        {
            dataGridView1.Columns[0].Width = 120;
            dataGridView1.Columns[1].Width = 190;
            dataGridView1.Columns[2].Width = 280;
            //dataGridView1.RowHeadersVisible = false;//隐藏最前面的空白列
            //用户不能手动编辑单元格的内容
            dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
            // 设定包括Header和所有单元格的列宽自动调整
            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
            //根据数据内容自动调整行高
            dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
            // 设置用户不能手动给 DataGridView1 添加新行 
            dataGridView1.AllowUserToAddRows = false;
        }
        //自动在每行前面生成索引
        private void dataGridView1_RowPostPaint_1(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            //自动编号,与数据无关
            Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, dataGridView1.RowHeadersWidth - 4, e.RowBounds.Height);
            TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), dataGridView1.RowHeadersDefaultCellStyle.Font, rectangle, dataGridView1.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
        }
        private async Task Task1()
        {
            dc.AutoIncrement = true;//自动增加
            dc.AutoIncrementSeed = 1;//起始为1
            dc.AutoIncrementStep = 1;//步长为1
            dc.AllowDBNull = false;//是否允许空值
            //添加列
            DT.Columns.Add("级别", typeof(string));
            DT.Columns.Add("时间和日期", typeof(string));
            DT.Columns.Add("名称", typeof(string));
            DT.Columns.Add("内容", typeof(string));
            //dc.DolumnType[0] = DateGridCheckBoxColumn;
            dataGridView1.DataSource = DT;
            eventLog.Log = "System";//打开系统日志System
            EventLogEntryCollection collection = eventLog.Entries; //获取可遍历collection
            label3.Text = $"一共有:{collection.Count}条记录";
            //string resul = "";
            foreach (EventLogEntry item in collection)//遍历查询出来的数据
            {
                //添加行
                DataRow newRow = DT.NewRow();
                newRow["级别"] = item.EntryType.ToString();//设置第一行显示的数据
                newRow["时间和日期"] = item.TimeWritten.ToString();//绑定剩余列的数据
                newRow["名称"] = item.UserName;
                newRow["内容"] = item.Message;
                //一定记得行数据创建完毕后添加到列表中
                DT.Rows.Add(newRow);
            }
        }
        // 在事件处理程序中获取单击的列的名称和排序方向,并使用该信息来筛选和排序数据。
        private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            string columnName = dataGridView1.Columns[e.ColumnIndex].Name;
            ListSortDirection sortDirection = ListSortDirection.Ascending;

            if (dataGridView1.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection == SortOrder.Ascending)
            {
                sortDirection = ListSortDirection.Descending;
            }
            dataGridView1.Sort(dataGridView1.Columns[columnName], sortDirection);
            // 筛选数据
            string filterExpression = string.Format("{0} LIKE '%{1}%'", columnName, textBox1.Text);
            (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = filterExpression;
            dataGridView1.Update();
            label3.Text = "一共有" + dataGridView1.Rows.Count.ToString() + "条记录";
        }
    }
}

Form3:运行结果

        textBox1可以进行查询,动态显示记录。

        右键标题行升序降序排列

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值