我正在开发Windows应用程序。我必须从我的应用程序运行一些窗口exe,我能够做同样的但当我关闭我的应用程序时这些exe仍然处于运行状态,我不知道如何关闭这些exe。请提出一些建议。
运行流程
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();
}
}
}
答案 0 :(得分:1)
一些选项:
答案 1 :(得分:1)
使用Windows API - P / Invoke。 FindWindow()
或EnumWindows()
获取窗口句柄。然后,您可以通过WM_CLOSE
功能发送WM_QUIT
或SendMessage()
来结束申请。
请注意,如果应用程序在退出时检查用户输入(如MessageBox询问天气,用户确实想要退出),唯一的选择可能是发送WM_DESTROY
,这相当于Process.Kill
(至少在造成数据丢失方面 - 我不确定它是绝对等价的。)
答案 2 :(得分:1)
试试这个:
Process[] p = Process.GetProcessesByName("osk");
foreach (var item in p)
{
item.Kill();
}
答案 3 :(得分:0)
关闭应用程序后,您从应用程序运行的EXE未终止的原因可能是因为第二个应用程序作为不同的SEPARATE进程运行。
如果您使用System.Diagnostics.Process
运行其他流程,它将保留在后台,直到手动终止或完成它的工作。
答案 4 :(得分:0)
试试这个进程proc = Process.GetProcessesByName(“processname”); proc.Kill();