Windows任务管理器

Windows上的任务管理器大家都用过

任务管理器运行的python程序在哪里 任务管理器代码_windows 10


我用c#写了一个任务管理器

任务管理器运行的python程序在哪里 任务管理器代码_winform_02

过程

先设计好窗体

需要用到的控件(Listviewbuttonlabel

任务管理器运行的python程序在哪里 任务管理器代码_winform_03

下面附上代码

初始化数据
这个要写在窗体加载出来之前执行的代码。也就是Load事件

//初始化列表
        private void Form1_Load(object sender, EventArgs e)
        {
            listView1.Items.Clear();//清除listview里面的数据

            Process[] proList = Process.GetProcesses(".");//获得本机的进程》》》用对象数组接收
            lblNum.Text = proList.Length.ToString(); //当前进程数量
            foreach (Process p in proList)//foreach遍历对象数组
            {
                ListViewItem lvi = new ListViewItem();//实例化listview的项
                lvi.Text = p.ProcessName;//将数据名称添加进去
                lvi.SubItems.AddRange(new string[] { p.Id.ToString(), p.PrivateMemorySize64.ToString() }); //进程ID  使用内存
                lvi.Tag = p;//内存占用大小
                listView1.Items.Add(lvi);//将数据添加listview的所有项
            }
        }

进程数量

任务管理器运行的python程序在哪里 任务管理器代码_任务管理器运行的python程序在哪里_04

lblNum.Text = proList.Length.ToString(); //当前进程数量

这里需要将label的Text值来接收进程数量

刷新列表

任务管理器运行的python程序在哪里 任务管理器代码_visual studio_05


这个和初始化数据是一样的,直接调用初始化数据的方法

//刷新列表
        private void button1_Click(object sender, EventArgs e)
        {
            //调用窗体加载时初始化列表的方法
            Form1_Load(sender,e);
        }

结束进程

任务管理器运行的python程序在哪里 任务管理器代码_visual studio_06

//结束进程
        private void button2_Click(object sender, EventArgs e)
        {
            //弹窗提示
            DialogResult ok = MessageBox.Show("确定关闭该进程?", "结束提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            //如果选择OK
            if (ok==DialogResult.OK)
            {//如果选中一行数据
                if (listView1.SelectedItems.Count > 0)
                {
                    //如果选中数据不为空
                    if (listView1.SelectedItems[0].Tag != null)
                    {
                        try
                        {
                            //获取选中的进程
                            Process p = (Process)listView1.SelectedItems[0].Tag;
                            //结束选中的进程
                            p.Kill();
                            //删除listview的项》》》(对的选中进程)
                            listView1.Items.Remove(listView1.SelectedItems[0]);
                        }
                        //捕捉异常
                        catch (Exception ee)
                        {
                            //弹出异常信息
                            MessageBox.Show("无法结束进程 :" + ee.Message);
                        }
                    }
                }
            }
            else
            {
                //取消结束进程
            }         
        }

任务管理器运行的python程序在哪里 任务管理器代码_windows 10_07

结束进程先给个弹窗提示,如果点击确定…,如果点击取消…
点击确定之后会获取选中的进程
然后停止选中的进程
最后删除listview里面选中进程的项

完整代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Test2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //将listview设置为整行选中
            listView1.FullRowSelect = true;
        }
        //初始化列表
        private void Form1_Load(object sender, EventArgs e)
        {
            listView1.Items.Clear();//清除listview里面的数据

            Process[] proList = Process.GetProcesses(".");//获得本机的进程》》》用对象数组接收
            lblNum.Text = proList.Length.ToString(); //当前进程数量
            foreach (Process p in proList)//foreach遍历对象数组
            {
                ListViewItem lvi = new ListViewItem();//实例化listview的项
                lvi.Text = p.ProcessName;//将数据名称添加进去
                lvi.SubItems.AddRange(new string[] { p.Id.ToString(), p.PrivateMemorySize64.ToString() }); //进程ID  使用内存
                lvi.Tag = p;//内存占用大小
                listView1.Items.Add(lvi);//将数据添加listview的所有项
            }
        }
        //刷新列表
        private void button1_Click(object sender, EventArgs e)
        {
            //调用窗体加载时初始化列表的方法
            Form1_Load(sender,e);
        }
        //结束进程
        private void button2_Click(object sender, EventArgs e)
        {
            //弹窗提示
            DialogResult ok = MessageBox.Show("确定关闭该进程?", "结束提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            //如果选择OK
            if (ok==DialogResult.OK)
            {//如果选中一行数据
                if (listView1.SelectedItems.Count > 0)
                {
                    //如果选中数据不为空
                    if (listView1.SelectedItems[0].Tag != null)
                    {
                        try
                        {
                            //获取选中的进程
                            Process p = (Process)listView1.SelectedItems[0].Tag;
                            //结束选中的进程
                            p.Kill();
                            //删除listview的项》》》(对的选中进程)
                            listView1.Items.Remove(listView1.SelectedItems[0]);
                        }
                        //捕捉异常
                        catch (Exception ee)
                        {
                            //弹出异常信息
                            MessageBox.Show("无法结束进程 :" + ee.Message);
                        }
                    }
                }
            }
            else
            {
                //取消结束进程
            }         
        }

    }
}