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
在这里插入图片描述

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

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

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

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值