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

猜你喜欢

转载自blog.csdn.net/t15032286291/article/details/81096451
今日推荐