C#关于进程与线程(二)

一、创建进程信息查看程序

     作为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();

       }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值