欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现进程管理的启动和停止实例

程序员文章站 2023-12-05 22:38:52
本文实例讲述了c#实现进程管理的启动和停止方法。分享给大家供大家参考。具体实现方法如下: using system; using system.collecti...

本文实例讲述了c#实现进程管理的启动和停止方法。分享给大家供大家参考。具体实现方法如下:

using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.text;
using system.windows.forms;
using system.io;
//引用命名空间
using system.diagnostics;
using system.threading;
namespace startstopprocess
{
  public partial class form1 : form
  {
    int fileindex;
    string filename = "notepad.exe";
    process process1 = new process();
    public form1()
    {
      initializecomponent();
      //以详细列表方式显示
      listview1.view = view.details;
      //参数含义:列名称,宽度(像素),水平对齐方式
      listview1.columns.add("进程id", 70, horizontalalignment.left);
      listview1.columns.add("进程名称", 70, horizontalalignment.left);
      listview1.columns.add("占用内存", 70, horizontalalignment.left);
      listview1.columns.add("启动时间", 70, horizontalalignment.left);
      listview1.columns.add("文件名", 280, horizontalalignment.left);
    }
    private void buttonstart_click(object sender, eventargs e)
    {
      string argument = application.startuppath + "\\myfile" + fileindex + ".txt";
      if (file.exists(argument)==false)
      {
        file.createtext(argument);
      }
      //设置要启动的应用程序名称及参数
      processstartinfo ps = new processstartinfo(filename, argument);
      ps.windowstyle = processwindowstyle.normal;
      fileindex++;
      process p = new process();
      p.startinfo = ps;
      p.start();
      //等待启动完成,否则获取进程信息可能会失败
      p.waitforinputidle();
      refreshlistview();
    }
    private void buttonstop_click(object sender, eventargs e)
    {
      this.cursor = cursors.waitcursor;
      //创建新的process组件的数组,并将它们与指定的进程名称(notepad)的所有进程资源相关联.
      process[] myprocesses;
      myprocesses = process.getprocessesbyname(path.getfilenamewithoutextension(filename));
      foreach (process p in myprocesses)
      {
        //通过向进程主窗口发送关闭消息达到关闭进程的目的
        p.closemainwindow();
        //等待1000毫秒
        thread.sleep(1000);
        //释放与此组件关联的所有资源
        p.close();
      }
      fileindex = 0;
      refreshlistview();
      this.cursor = cursors.default;
    }
    private void refreshlistview()
    {
      listview1.items.clear();
      //创建process类型的数组,并将它们与系统内所有进程相关联
      process[] processes;
      processes = process.getprocessesbyname(path.getfilenamewithoutextension(filename));
      foreach (process p in processes)
      {
        //将每个进程的进程名称、占用的物理内存以及进程开始时间加入listview中
        listviewitem item = new listviewitem(
          new string[]{
            p.id.tostring(),
            p.processname,
            string.format("{0} kb", p.privatememorysize64/1024.0f),
            string.format("{0}",p.starttime),
            p.mainmodule.filename
          });
        listview1.items.add(item);
      }
    }
    private void buttonrefresh_click(object sender, eventargs e)
    {
      refreshlistview();
    }
    private void form1_load(object sender, eventargs e)
    {

    }
  }
}

希望本文所述对大家的c#程序设计有所帮助。