关闭进程从应用程序关闭或退出时从Windows应用程序启动
我正在开发Windows应用程序。我必须从我的应用程序运行一些窗口EXE,我可以做同样的事情,但是当我关闭我的应用程序这些EXE仍然在运行状态,我不知道如何关闭这些EXE。请提出一些提示。关闭进程从应用程序关闭或退出时从Windows应用程序启动
运行过程
private void StartChildProcess(string fileName)
{
Process newProcess = new Process();
newProcess.StartInfo = new ProcessStartInfo(fileName); ;
newProcess.Start();
localProcess.Push(newProcess);
}
要关闭过程
private void CloseStartedProcesses()
{
while (localProcess.Count > 0)
{
Process process = localProcess.Pop();
if (process != null && !process.HasExited)
{
process.CloseMainWindow();
process.Close();
}
}
}
试试这个:
Process[] p = Process.GetProcessesByName("osk");
foreach (var item in p)
{
item.Kill();
}
的原因,一旦你关闭你的应用程序可能是因为你已经从你的应用程序运行的EXE不会终止第二个应用程序作为不同的单独过程运行。
如果您使用System.Diagnostics.Process
运行另一个进程,它将保持后台状态,直到手动终止或直到它完成作业。
有没有什么办法可以关闭它。 – Abhishek 2012-01-03 07:00:46
尝试此过程proc = Process.GetProcessesByName(“processname”); proc.Kill();
'Kill'强行结束进程,这很可能不是你想要的。 'CloseMainWindow'将是一个更好的选择。 – 2012-01-03 06:58:05
其实我试图从我的应用程序运行osk.exe,我试图关闭它,但我无法。有没有办法做到这一点。 – Abhishek 2012-01-03 07:00:31
你打算如何关闭它? – 2012-01-03 07:02:36
一些选项:
- 设置一些通信系统,因此主要应用可以提醒其他应用程序关闭(读了一些WCF信息或远程)
- 创建do.shutdown文件,并让第二个应用程序检查该文件是否存在,简单但有效。
- 使用process.Kill选项
- 使用Sendkey或相当于发送 '退出' 键组合
这不是wcf应用程序,这是简单的winform应用程序。 – Abhishek 2012-01-03 07:06:58
Wcf只是一个可以添加到winform应用程序的库,太糟糕了,您将不得不更改目标应用程序以接收Wcf消息以关闭。我想这个Sendkey或者相当于“最好”的选项。 – CodingBarfield 2012-01-03 07:10:32
谢谢Dude,但我是Windows应用程序开发全新的,我是一个Web开发人员,这就是为什么我面临这些问题。我不知道wcf。 – Abhishek 2012-01-03 07:13:57
使用Windows API - P/Invoke的。 FindWindow()
或EnumWindows()
获取窗口句柄。然后您可以发送WM_CLOSE
或WM_QUIT
以通过SendMessage()
函数结束应用程序。
注意,如果应用程序检查用户输入的退出(如一个消息,询问天气,用户真的想退出)唯一的选择可能是发送WM_DESTROY
这将等同于Process.Kill
(在方面至少造成数据损失 - 我不确定它是绝对等价的)。
你怎么关闭应用程序?显示一些代码! – Matthias 2012-01-03 06:50:07
我试图在processinfo类型变量上存储进程信息,然后尝试somevariable.kill(),但没有运气它生成错误“无法处理请求,因为进程已退出”。 – Abhishek 2012-01-03 07:04:10
如果该过程已经退出,那意味着它已经关闭。问题解决了。如果问题*未解决,请使用示例代码和更多信息更新您的问题。 – 2012-01-03 07:05:47