我有一个c#应用程序,我想指示从不同的进程中很好地关闭。 我也希望能够让它打开它的主窗口。 我有一个对它的主窗口句柄的引用。
我知道我可以使用精心设计的方案(如远程处理或WCF)来实现。 问题是我可以使用更简单的机制,如窗口消息,或c#应用程序中窗口的OnClose事件处理程序
答案 0 :(得分:6)
Pinvoke SendMessage()将WM_CLOSE消息发送到应用程序的主窗口。要求它打开它的主窗口可能会非常困难,在创建窗口之前无法获得窗口句柄。 Process.Start()将是正常的方式。
WCF的低成本替代方案,优于pinvoke,是命名管道或与应用程序连接的套接字。这需要能够修改应用程序的源代码。
答案 1 :(得分:2)
我认为您可以使用FindWindow
查找正确的子窗口,然后使用SendMessage
或PostMessage
发送WM_CLOSE
。
这是另一个StackOverflow question,用于处理在C#中执行此操作。
编辑:虽然正如另一个答案在该问题中所说,但您可能可以使用Process.CloseMainWindow
代替。
答案 2 :(得分:2)
Process.CloseMainWindow
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.closemainwindow.aspx
答案 3 :(得分:0)
我首先要让我的目标应用程序“意识到”其他进程可能会触发关闭或打开窗口或执行任何操作这一事实。这应该类似于通过目标应用程序的api或公共方法调用另一个进程上的任何方法。 ..你没有尝试用第三方应用程序做某事,我认为你不应该试图直接发送消息来关闭或关闭。