我有一组在任务栏中运行的服务器应用程序。我正在尝试在c#中编写一个可以优雅地关闭应用程序的小型服务器管理应用程序。但是我无法弄清楚如何去做。
我可以获得进程(Process类的一个实例)。调用Process.CloseMainWindow()不起作用。你没有获得一个任务托盘进程的Process.MainWindowHandle(它是零,并且记录了这种情况),所以我不能发送一个WM_SYSCOMMAND,SC_CLOSE消息。
我可以杀死()它,但那并不优雅。有任何想法吗?服务器应用程序是用Delphi Win32编写的。我可以修改它们。
答案 0 :(得分:2)
您可以使用pipes向他们发送消息。
答案 1 :(得分:2)
您可以使用EnumWindows迭代窗口,以找到与托盘图标关联的隐藏窗口。这一切都相当丑陋且容易出错。干净利落,让这些“服务器应用程序”创建一个命名管道。您可以使用众所周知的名称在管理器应用程序中连接它们,然后向它们发送命令。 System.IO.Pipes命名空间。