如何从一个不同的过程closures一个窗口

我有ac#应用程序,我想指示从一个不同的过程很好地closures。 我也希望能够要求它打开主窗口。 我有一个参考其主窗口句柄。

我知道我可以使用精心devise的scheme,如远程或WCF。 问题是我可以使用更简单的机制,如窗口消息,或在C#应用程序窗口的OnClose事件处理程序

Solutions Collecting From Web of "如何从一个不同的过程closures一个窗口"

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

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

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

这里是另一个StackOverflow的问题 ,在C#中处理这个问题 。

编辑:虽然作为其他答案在这个问题上说,你也许可以使用Process.CloseMainWindow

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