C#的process进程的处理

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

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
C#的process进程的处理_第1张图片

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

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

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运行完毕”);

}

你可能感兴趣的:(c#,c#)