一、创建进程信息查看程序
作为Windows操作系统中重要的组成部分,进程中包含了大量的信息。在任务管理器中就可以查看这些信息。在Process类中提供了一个静态方法GetProcesses,该方法可以获得当前运行的所有进程。该方法的返回值是一个集合,通过对该集合的遍历即可获得所有的进程。
using System.Diagnostics;
class Program
{
static void Main(string[ ] args)
{
//声明一个进程数组,用于保存所有的进程
Process[ ] ps;
//获取当前系统正在运行的全部进程
ps=Process.GetProcesses();
try
{
//输出进程信息
Console.WriteLine("进程信息输出:");
foreach(Process p in ps)
{
Console.WriteLine(p.ProcessName);
}
}
catch(Exception e)
{
Console.WriteLine("输出失败!");
Console.WriteLine(e.Message);
}
finally
{
ps=null;
}
}
}
二、创建进程管理程序
本节的目的是仿照Windows操作系统的任务管理器创建一个简单的进程管理程序。程序中将包含简单的进程管理功能。这其中除了简单的信息显示(如进程名称、进程ID、优先级和占用内存等)外,还提供一个用于结束进程的按钮。
using System.Diagnostics;
public partial class Form1:Form
{
public Form1()
{
InitializeComponent();
}
///<summary>
///窗体加载时在ListView中显示所有进程
///</summary>
private void Form1_Load(object sender,EventArgs e)
{
ProcessLoad();
}
///<summary>
///获得所有进程
///</summary>
private void ProcessLoad()
{
//声明一个进程数组,用于保存所有的进程
Process[ ] ps;
//获取当前系统正在运行的全部进程
ps=Process.GetProcesses();
listView1.Items.Clear();
try
{
//使用foreach循环获得所有的进程
foreach(Process p in ps)
{
//向ListView中添加进程的信息
ListViewItem lvi=new ListViewItem();
lvi.Text=p.ProcessName;
lvi.SubItems.Add(p.Id.ToString());
lvi.SubItems.Add(p.BasePriority.ToString());
lvi.SubItems.Add(p.WorkingSet64.ToString());
listView1.Items.Add(lvi);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
ps=null;
}
}
///<summary>
///结束进程
///</summary>
private void button1_Click(object sender,EventArgs e)
{
//首先判断是否已经选中某个进程
if(listView1.SelectedItems.Count >=1)
{
//根据进程的ID查找该进程
Process p=Process.GetProcessById(Convert.ToInt32(listView1.SelectedItems[0].SubItems[1].Text));
//为了防止用户误操作,提示用户
if(MessageBox.Show("确定要结束进程吗?","结束进程",MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2)==DialogResult.OK)
{
if(p!=null)
{
//结束进程
p.Kill();
}
}
}
}
///<summary>
///刷新
///</summary>
private void button2_Click(object sender,EventArgs e)
{
ProcessLoad();
}
}