我有一个安装程序,我想确保我的应用程序当前没有运行。如果是,我想关闭它(不要杀死它,因为应用程序必须在退出时保存一些数据)。另外一个问题是隐藏了我的应用程序窗口(显示了托盘图标),因此Process.MainWindowHandle始终为0.
我可以做些什么来表示我的申请结束?我可以直接向应用程序(而不是窗口)发送消息吗?
非常感谢您的帮助。 格里
答案 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消息以将其关闭。
答案 3 :(得分:0)
您可以使用PostThreadMessage WinAPI功能(通过PInvoke)。