这是我的问题:我需要从 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 函数 :)