关闭任务托盘应用程序

时间:2010-10-05 21:11:16

标签: c# windows message taskbar

我有一组在任务栏中运行的服务器应用程序。我正在尝试在c#中编写一个可以优雅地关闭应用程序的小型服务器管理应用程序。但是我无法弄清楚如何去做。

我可以获得进程(Process类的一个实例)。调用Process.CloseMainWindow()不起作用。你没有获得一个任务托盘进程的Process.MainWindowHandle(它是零,并且记录了这种情况),所以我不能发送一个WM_SYSCOMMAND,SC_CLOSE消息。

我可以杀死()它,但那并不优雅。有任何想法吗?服务器应用程序是用Delphi Win32编写的。我可以修改它们。

2 个答案:

答案 0 :(得分:2)

您可以使用pipes向他们发送消息。

答案 1 :(得分:2)

您可以使用EnumWindows迭代窗口,以找到与托盘图标关联的隐藏窗口。这一切都相当丑陋且容易出错。干净利落,让这些“服务器应用程序”创建一个命名管道。您可以使用众所周知的名称在管理器应用程序中连接它们,然后向它们发送命令。 System.IO.Pipes命名空间。