C#是否有可能结束这一进程?

C#是否有可能结束这一进程?,c#,process,C#,Process,我有以下代码: private void button1_Click(object sender, EventArgs e) { Process p = new Process(); string path = AppDomain.CurrentDomain.BaseDirectory + "samp.exe"; string arguments = "arguments..."; p.Exited += new EventHandler(p_Exited);

我有以下代码:

private void button1_Click(object sender, EventArgs e)
{
    Process p = new Process();
    string path = AppDomain.CurrentDomain.BaseDirectory + "samp.exe";
    string arguments = "arguments...";
    p.Exited += new EventHandler(p_Exited);
    p.StartInfo.FileName = path;
    p.EnableRaisingEvents = true;
    p.Start();
}

它可以工作,但是当我启动
samp.exe
时,名称变为
gta_sa.exe
。我想检查gta_sa.exe进程是否已关闭,然后关闭我的应用程序

很快:我想做一个按钮。当我点击时,它启动
samp.exe
进程,但是
samp.exe
重命名为
gta_sa.exe
,所以我需要检查
gta_sa.exe
进程是否关闭,关闭我的应用程序(Test.exe)

我的代码正在关闭
samp.exe
,但我想关闭
gta_sa.exe

它可以工作,但当启动samp.exe时,名称会更改为gta_sa.exe

听起来samp.exe是gta_sa.exe的启动器。也就是说,第一个进程启动第二个进程。如果samp.exe没有等待gta_sa.exe退出,则必须找到gta_sa.exe的运行实例。然后,您可以为Exited添加一个事件处理程序

这是我关闭samp.exe的代码,但我不想关闭gta_sa.exe

不,不是。当samp.exe自行关闭(或出于其他原因)时,您的代码将收到警报。如果samp.exe确实是一个启动器,那么它的正常行为将是在启动gta_sa.exe后关闭

如果要关闭gta_sa.exe,可以使用

您可以设置gta_sa.exe的事件处理程序,如下所示

var processes = Process.GetProcessesByName("gta_sa.exe");
foreach (var p in processes)
{
    p.EnableRaisingEvents = true;
    p.Exited += new EventHandler(p_Exited);
}
确保在gta_sa.exe启动之前运行此代码。通常,进程中只有一个项目,即由samp.exe启动的一个进程

它可以工作,但当启动samp.exe时,名称会更改为gta_sa.exe

听起来samp.exe是gta_sa.exe的启动器。也就是说,第一个进程启动第二个进程。如果samp.exe没有等待gta_sa.exe退出,则必须找到gta_sa.exe的运行实例。然后,您可以为Exited添加一个事件处理程序

这是我关闭samp.exe的代码,但我不想关闭gta_sa.exe

不,不是。当samp.exe自行关闭(或出于其他原因)时,您的代码将收到警报。如果samp.exe确实是一个启动器,那么它的正常行为将是在启动gta_sa.exe后关闭

如果要关闭gta_sa.exe,可以使用

您可以设置gta_sa.exe的事件处理程序,如下所示

var processes = Process.GetProcessesByName("gta_sa.exe");
foreach (var p in processes)
{
    p.EnableRaisingEvents = true;
    p.Exited += new EventHandler(p_Exited);
}
确保在gta_sa.exe启动之前运行此代码。通常,进程中只有一个项目,即由samp.exe启动的一个进程

它可以工作,但当启动samp.exe时,名称会更改为gta_sa.exe

听起来samp.exe是gta_sa.exe的启动器。也就是说,第一个进程启动第二个进程。如果samp.exe没有等待gta_sa.exe退出,则必须找到gta_sa.exe的运行实例。然后,您可以为Exited添加一个事件处理程序

这是我关闭samp.exe的代码,但我不想关闭gta_sa.exe

不,不是。当samp.exe自行关闭(或出于其他原因)时,您的代码将收到警报。如果samp.exe确实是一个启动器,那么它的正常行为将是在启动gta_sa.exe后关闭

如果要关闭gta_sa.exe,可以使用

您可以设置gta_sa.exe的事件处理程序,如下所示

var processes = Process.GetProcessesByName("gta_sa.exe");
foreach (var p in processes)
{
    p.EnableRaisingEvents = true;
    p.Exited += new EventHandler(p_Exited);
}
确保在gta_sa.exe启动之前运行此代码。通常,进程中只有一个项目,即由samp.exe启动的一个进程

它可以工作,但当启动samp.exe时,名称会更改为gta_sa.exe

听起来samp.exe是gta_sa.exe的启动器。也就是说,第一个进程启动第二个进程。如果samp.exe没有等待gta_sa.exe退出,则必须找到gta_sa.exe的运行实例。然后,您可以为Exited添加一个事件处理程序

这是我关闭samp.exe的代码,但我不想关闭gta_sa.exe

不,不是。当samp.exe自行关闭(或出于其他原因)时,您的代码将收到警报。如果samp.exe确实是一个启动器,那么它的正常行为将是在启动gta_sa.exe后关闭

如果要关闭gta_sa.exe,可以使用

您可以设置gta_sa.exe的事件处理程序,如下所示

var processes = Process.GetProcessesByName("gta_sa.exe");
foreach (var p in processes)
{
    p.EnableRaisingEvents = true;
    p.Exited += new EventHandler(p_Exited);
}

确保在gta_sa.exe启动之前运行此代码。通常,进程中只有一个项目,即samp.exe启动的一个进程。

当samp.exe进程退出时,尝试获取“gta_sa.exe”进程并终止它:

void p_Exited(object sender, EventArgs e)
{
    var processes = Process.GetProcessesByName("gta_sa.exe");
    foreach (var process in processes)
        process.Kill();
}

当samp.exe进程退出时,尝试获取“gta_sa.exe”进程并终止它:

void p_Exited(object sender, EventArgs e)
{
    var processes = Process.GetProcessesByName("gta_sa.exe");
    foreach (var process in processes)
        process.Kill();
}

当samp.exe进程退出时,尝试获取“gta_sa.exe”进程并终止它:

void p_Exited(object sender, EventArgs e)
{
    var processes = Process.GetProcessesByName("gta_sa.exe");
    foreach (var process in processes)
        process.Kill();
}

当samp.exe进程退出时,尝试获取“gta_sa.exe”进程并终止它:

void p_Exited(object sender, EventArgs e)
{
    var processes = Process.GetProcessesByName("gta_sa.exe");
    foreach (var process in processes)
        process.Kill();
}

是的,但我是新手,有人能为我创建代码吗((您所需要的一切或多或少都在我链接到的MSDN示例中。请查看该示例,并尽最大努力编写代码。如果您一直在编写代码,请在尝试编写代码时发布一个新问题。我知道process kill(),但我需要其他…我正在询问如何在gta_sa.exe关闭时关闭我当前的form.exe。那么,您当前的方法将起作用,除非您需要使用MSDN示例中所示的方法获取gta_sa.exe的流程实例。MSDN链接有示例代码-您需要获取
流程
的实例才能调用
Kill