C#:运行进程然后使用按钮终止它

时间:2013-11-13 02:48:51

标签: c# executable kill

我希望你能帮我解决这个问题,我的C#非常生疏。

我在表单加载时运行可执行文件。

    private void Form1_Load(object sender, EventArgs e)
    {
        ProcessStartInfo exe = new ProcessStartInfo();
        exe.Arguments = "arguments";
        exe.FileName = "file.exe";
        Process.Start(exe);
    }

我想使用按钮杀死该过程,但我不知道如何实现这一目标。

    private void button1_Click(object sender, EventArgs e)
    {

    }

感谢。

3 个答案:

答案 0 :(得分:5)

Process.Start返回Process类型的对象。您可以将其保存到变量中,然后使用Killmsdn

方法Immediately stops the associated process

例如,在Form1级别声明一个字段:

class Form1
{
    private Process process;

    private void Form1_Load(object sender, EventArgs e)
    {
        //running notepad as an example
        process = Process.Start("notepad"); 
    }

    //and then at button handler kill that process
    private void button1_Click(object sender, EventArgs e)
    {
        //consider adding check for null
        process.Kill();
    }
}

答案 1 :(得分:2)

您应该调用Process.CloseMainWindow执行有序的流程终止并关闭所有窗口。与导致异常终止的Process.Kill相反。 CloseMainWindow更适用于具有用户界面的应用程序。

process =  Process.Start(exe);//in form load set field

private void button1_Click(object sender, EventArgs e)
{
   process.CloseMainWindow();
}

remarks on MSDN揭示了有关异步行为和其他相关细节的重要信息。

  

Kill强制终止进程,而仅限CloseMainWindow   请求终止。当具有图形界面的过程是   执行时,其消息循环处于等待状态。消息循环   每次Windows消息被发送到进程时执行   操作系统。调用CloseMainWindow发送请求以关闭   主窗口,在一个结构良好的应用程序中,关闭孩子   Windows并撤消应用程序的所有正在运行的消息循环。该   通过调用CloseMainWindow请求退出进程不会强制执行   申请退出。该应用程序可以要求用户验证   在戒烟之前,或者它可以拒绝退出。强制应用程序   退出,使用Kill方法。 CloseMainWindow的行为是   与使用关闭应用程序主窗口的用户相同   系统菜单。因此,请求通过关闭退出进程   主窗口不会强制应用程序立即退出。

等...

答案 2 :(得分:0)

试试这个

try
{
Process [] proc Process.GetProcessesByName("notepad");
proc[0].Kill();
}