我希望你能帮我解决这个问题,我的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)
{
}
感谢。
答案 0 :(得分:5)
Process.Start
返回Process
类型的对象。您可以将其保存到变量中,然后使用Kill
(msdn)
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();
}