关闭任务栏应用程序

4
我有一组在任务栏中运行的服务器应用程序。我正在尝试编写一个小型的C#服务器管理应用程序,可以优雅地关闭这些应用程序。但是,我遇到了如何实现的问题。
我可以得到该进程(Process类的一个实例)。调用Process.CloseMainWindow()不起作用。对于任务栏进程,您无法获得Process.MainWindowHandle(它为零,并且已经记录下来),因此无法发送WM_SYSCOMMAND、SC_CLOSE消息。
我可以使用Kill()方法,但这不是优雅的方式。有什么建议吗?这些服务器应用程序是用Delphi Win32编写的。我可以修改它们。
2个回答

2
您可以使用管道将消息发送给它们。 点击此处 了解更多信息。

2
你可以使用EnumWindows迭代窗口,以查找与托盘图标相关联的隐藏窗口。这样做有点丑陋且容易出错。更好的方法是在“服务器应用程序”中创建一个命名管道,然后在管理器应用程序中使用众所周知的名称连接到它们,并发送命令。使用System.IO.Pipes命名空间。

我可以做到,尽管我一直在寻找发送关闭消息的方法。这些应用程序有一个消息循环,但由于没有主窗口,我无法想出将消息传递到其中的方法。 - jackjumper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接