从我的 Winform C# 执行和关闭其他应用程序
Execute And Close Other Applications From My Winform C#
这是我程序的一小部分,我的程序需要从 DataGridView(内容单击事件)启动程序,它只是完美地执行该程序,但无法关闭它,因为一些传入程序没有具有与文件名相同的进程名称。我也尝试获取 processid,但它抛出以下错误(你能给我一个工作代码吗,因为我可以获得我的 winform 进程的 id,但我如何从我的程序中获取外部启动的应用程序的 processid。
我试过了,它抛出以下错误
An unhandled exception of type 'System.ArgumentException' occurred in System.dll
Additional information: Process with an Id of 16924 is not running.)"
下面是我获取进程 ID 但失败的代码
private void button1_Click(object sender, EventArgs e)
{
var processid = Process.Start("Calc");
pn =processid.ProcessName;
pid = processid.Id;
}
int pid;
String pn;
private void button2_Click(object sender, EventArgs e)
{
var process1 = Process.GetProcessById(pid);
process1.Kill();
}
伪代码如下。
我已经试过了:
private void button1_Click(object sender, EventArgs e)
{
Process.Start("Calc");
}
private void button2_Click(object sender, EventArgs e)
{
foreach (var process in Process.GetProcessesByName("Calc"))
{
process.Kill();
}
}
我的代码:
private void button1_Click(object sender, EventArgs e)
{
Process.Start("THIS PATH WILL COME FROM DATABASE");
}
private void button2_Click(object sender, EventArgs e)
{
foreach (var process in Process.GetProcessesByName("PROCESS NAME WHICH MY PROGRAM STARTED"))
{
process.Kill();
}
}
启动进程时获取进程的 Id
并存储它。然后你可以通过id获取进程来杀掉它。这不仅确保您不需要知道进程的名称(以防它与启动它的路径不同)而且确保您在有多个实例 运行 时杀死正确的实例,其中一些不是由您的程序启动的。
这是我程序的一小部分,我的程序需要从 DataGridView(内容单击事件)启动程序,它只是完美地执行该程序,但无法关闭它,因为一些传入程序没有具有与文件名相同的进程名称。我也尝试获取 processid,但它抛出以下错误(你能给我一个工作代码吗,因为我可以获得我的 winform 进程的 id,但我如何从我的程序中获取外部启动的应用程序的 processid。 我试过了,它抛出以下错误
An unhandled exception of type 'System.ArgumentException' occurred in System.dll Additional information: Process with an Id of 16924 is not running.)"
下面是我获取进程 ID 但失败的代码
private void button1_Click(object sender, EventArgs e)
{
var processid = Process.Start("Calc");
pn =processid.ProcessName;
pid = processid.Id;
}
int pid;
String pn;
private void button2_Click(object sender, EventArgs e)
{
var process1 = Process.GetProcessById(pid);
process1.Kill();
}
伪代码如下。
我已经试过了:
private void button1_Click(object sender, EventArgs e)
{
Process.Start("Calc");
}
private void button2_Click(object sender, EventArgs e)
{
foreach (var process in Process.GetProcessesByName("Calc"))
{
process.Kill();
}
}
我的代码:
private void button1_Click(object sender, EventArgs e)
{
Process.Start("THIS PATH WILL COME FROM DATABASE");
}
private void button2_Click(object sender, EventArgs e)
{
foreach (var process in Process.GetProcessesByName("PROCESS NAME WHICH MY PROGRAM STARTED"))
{
process.Kill();
}
}
启动进程时获取进程的 Id
并存储它。然后你可以通过id获取进程来杀掉它。这不仅确保您不需要知道进程的名称(以防它与启动它的路径不同)而且确保您在有多个实例 运行 时杀死正确的实例,其中一些不是由您的程序启动的。