如何从不同的进程关闭窗口

时间:2010-12-08 13:24:46

标签: c# wpf windows windowing

我有一个c#应用程序,我想指示从不同的进程中很好地关闭。 我也希望能够让它打开它的主窗口。 我有一个对它的主窗口句柄的引用。

我知道我可以使用精心设计的方案(如远程处理或WCF)来实现。 问题是我可以使用更简单的机制,如窗口消息,或c#应用程序中窗口的OnClose事件处理程序

4 个答案:

答案 0 :(得分:6)

Pinvoke SendMessage()将WM_CLOSE消息发送到应用程序的主窗口。要求它打开它的主窗口可能会非常困难,在创建窗口之前无法获得窗口句柄。 Process.Start()将是正常的方式。

WCF的低成本替代方案,优于pinvoke,是命名管道或与应用程序连接的套接字。这需要能够修改应用程序的源代码。

答案 1 :(得分:2)

我认为您可以使用FindWindow查找正确的子窗口,然后使用SendMessagePostMessage发送WM_CLOSE

这是另一个StackOverflow question,用于处理在C#中执行此操作。

编辑:虽然正如另一个答案在该问题中所说,但您可能可以使用Process.CloseMainWindow代替。

答案 2 :(得分:2)

答案 3 :(得分:0)

我首先要让我的目标应用程序“意识到”其他进程可能会触发关闭或打开窗口或执行任何操作这一事实。这应该类似于通过目标应用程序的api或公共方法调用另一个进程上的任何方法。 ..你没有尝试用第三方应用程序做某事,我认为你不应该试图直接发送消息来关闭或关闭。