Windows任务管理器
Windows上的任务管理器大家都用过
我用c#写了一个任务管理器
过程
先设计好窗体
需要用到的控件(Listview
,button
,label
)
下面附上代码
初始化数据
这个要写在窗体加载出来之前执行的代码。也就是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的所有项
}
}
进程数量
lblNum.Text = proList.Length.ToString(); //当前进程数量
这里需要将label的Text值来接收进程数量
刷新列表
这个和初始化数据是一样的,直接调用初始化数据的方法
//刷新列表
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
{
//取消结束进程
}
}
结束进程先给个弹窗提示,如果点击确定
…,如果点击取消…
点击确定
之后会获取选中的进程
然后停止选中的进程
最后删除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
{
//取消结束进程
}
}
}
}