【发布时间】:2008-09-21 05:40:50
【问题描述】:
这是我的问题:我需要从 C# 程序关闭一个已经在运行的进程。 问题是该进程现在作为一个图标运行(最小化到任务栏),除非用户至少打开一次(这在无人看管的机器上永远不会发生),否则它永远不会 有一个主窗口。
我的另一个要求是应用关闭而不是杀死。我需要它来将它的内存缓冲区写入磁盘——杀死它会导致数据丢失。
到目前为止,这是我尝试过的:
foreach (Process proc in Process.GetProcesses())
{
if (proc.ProcessName.ToLower().StartsWith("myapp"))
{
if (proc.MainWindowHandle.ToInt32() != 0)
{
proc.CloseMainWindow();
proc.Close();
//proc.Kill(); <--- not good!
}
}
}
在窗口最小化时发现 MainWindowHandle == 0 后,我添加了 if 子句。删除 if 没有帮助。 CloseMainWindow() 和 Close() 都不起作用。 Kill() 可以,但如上所述 - 这不是我需要的。
任何想法都可以接受,包括使用神秘的 Win32 API 函数 :)
【问题讨论】: