C#的process进程的处理

    技术2022-07-20  84

    查找进程、启用进程、关闭进程

    using ……

    using ……

    using System.Diagnostics;

    //启用进程

    void process()

    {

    Process p;//实例化一个Process对象

    p=Process.Start(@“E:\1.txt”);//要开启的进程(或 要启用的程序),括号内为绝对路径

    p.Kill();//结束进程

    }

    //查找进程、结束进程

    void killProcess()

    {

    Process[] pro = Process.GetProcesses();//获取已开启的所有进程 //遍历所有查找到的进程 for (int i = 0; i < pro.Length; i++) { //判断此进程是否是要查找的进程 if (pro[i].ProcessName.ToString().ToLower() == "pc_task") { pro[i].Kill();//结束进程 } }

    }

    C#process判断进程是否存在,(注意if和else的使用,如果增加了else的话就不查找了)

    方法一:

    using System.Diagnostics;

    Process[] vProcesses = Process.GetProcesses();

    foreach (Process vProcess in vProcesses)

    if (vProcess.ProcessName.Equals( "iexplore ",

    StringComparison.OrdinalIgnoreCase))

    {

    MessageBox.Show( "IE已经打开 ");

    break;

    }

    方法二:

    using System.Diagnostics;

    Process[] app = Process.GetProcessesByName(“AMS”);

    if (app.Length > 0) { MessageBox.Show("请关闭已经启动的程序后再进行尝试"); return; } else { System.Diagnostics.Process.Start("AMS.exe"); }

    杀死进程:查找到对应的进程后就可以调用系统命令杀死指定名称的进程

    Process[] p = Process.GetProcessesByName("AMS"); foreach (Process ps in p) { ps.Kill(); }

    关于方法调用的使用

    static void main()

    {

    one();

    }

    #region 查看制定进程是否存在

    static void one()

    {

    console.writeline(“请输入要查看的进程名称”)

    string name =console.readline().trim();

    console.writeline(“查看间隔(秒):”);

    int s =int.parse(console.readline().trim());

    see(name,s);

    }

    static void see(string name,int s)

    {

    system.diagnostics.process[] list =system.diagnostics.process.getprocesses();

    bool flag =false;

    foreach (system.diagnostics.process item in list)

    if(item.peocessname.toupper()==name.toupper())

    {

    flag =true;

    }

    if(flag)//非真即假

    {

    console.writeline(datetime.now+name+“存在”);

    }

    else

    {

    console.writeline(datetime.now+name+“不存在”);

    system.threading.thread.sleep(s*1000);

    see(name,s);

    }

    }

    #endregion

    调用的外部程序关闭后执行某个操作

    方法一:这种方法会阻塞当前进程,直到运行的外部程序退出

    System.Diagnostics.Process exep = System.Diagnostics.Process.Start(@“C:\Windows\Notepad.exe”);

    exep.WaitForExit();//关键,等待外部程序退出后才能往下执行

    MessageBox.Show(“Notepad.exe运行完毕”);

    方法二:为外部进程添加一个事件监视器,当退出后,获取通知,这种方法时不会阻塞当前进程,你可以处理其它事情

    System.Diagnostics.Process exep = new System.Diagnostics.Process();

    exep.StartInfo.FileName = @“C:\Windows\Notepad.exe”;

    exep.EnableRaisingEvents = true;

    exep.Exited += new EventHandler(exep_Exited);

    exep.Start();

    //exep_Exited事件处理代码,这里外部程序退出后激活,可以执行你要的操作

    void exep_Exited(object sender, EventArgs e)

    {

    MessageBox.Show(“Notepad.exe运行完毕”);

    }

    Processed: 0.008, SQL: 9