如何关闭(而不是杀死)没有可见窗口的另一个应用程序? (C#)

时间:2010-09-24 06:24:56

标签: c# messaging sendmessage

我有一个安装程序,我想确保我的应用程序当前没有运行。如果是,我想关闭它(不要杀死它,因为应用程序必须在退出时保存一些数据)。另外一个问题是隐藏了我的应用程序窗口(显示了托盘图标),因此Process.MainWindowHandle始终为0.

我可以做些什么来表示我的申请结束?我可以直接向应用程序(而不是窗口)发送消息吗?

非常感谢您的帮助。 格里

4 个答案:

答案 0 :(得分:2)

只是将其他东西投入混合:named pipes

答案 1 :(得分:1)

当您希望应用程序正常关闭时,您可以让APP1侦听特定端口并向该端口发送消息。因此,APP2必须了解APP1端口以及它所期望的消息参数。

你也可以使用某种Message Queue(Windows有它,或者你可能想要使用像SQL Service Broker这样的东西)实现,并让一个APP向队列发送消息,另一个从队列中读取消息

您也可以查看一下:http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx

答案 2 :(得分:1)

您可以使用WINAPI按类或窗口文本查找窗口句柄(即使它是隐藏的)。然后向应用程序发送一条Windows消息以将其关闭。

http://support.microsoft.com/kb/178893

答案 3 :(得分:0)

您可以使用PostThreadMessage WinAPI功能(通过PInvoke)。