从ATL exe服务器(COM)调用.NET GUI
我们有以下情况:
一个ATL COM服务器(out-of-proc,EXE),它承载带有连接点的COM对象。
这些对象“驻留在”单个(exe)进程中,并且它们触发事件(使用Fire_ *方法)以便其他进程(例如:不同进程中的.NET GUI应用程序,ATL EXE服务器的“客户端”) )可以捕捉这些事件并作出相应的反应。
目前,我们有一个.NET应用程序(Windows Forms),它是ATL服务器的客户端。启动(双击)时,它会将一些委托(事件处理程序)附加到ATL服务器中托管的COM对象事件(连接点)。每次从ATL服务器触发事件时,.NET客户端通常会在主窗口中显示一些信息,或者打开一个新窗口供用户进行交互。
此解决方案基于以下文章:http://www.codeproject.com/KB/COM/cominterop.aspx#ConnectionPoints(COM-.NET事件处理)。
上面的场景假设用户在触发事件之前实际上双击了.NET客户端(exe),即 - 明确打开.NET应用程序。如果未打开(实例化).NET客户端,则触发的事件将“丢失” - 没有客户端处理它。
我们想要以下情况:
当从ATL服务器触发事件时,应立即显示(弹出)窗口以供用户与之交互(例如:填写电子邮件文本框并按“确定”),而无需启动。 NET客户端显然先于一切。这样,将向用户通知每个事件并且可以以交互方式对其作出反应。
我们查看了在ATL服务器中作为dll托管.NET客户端应用程序的选项,但是我已经读到从ATL EXE显示GUI是一个很大的“NO-NO”(任何GUI,不仅仅是.NET GUI, WinForms或WPF)。
这可能是服务器&客户端在两个不同的进程中运行(“客户端”尚未运行)?
有没有人遇到同样的问题?它解决了(以及如何...)?
谢谢 ;-)
奥马里
这有解决方案吗?
没有找到相关结果
已邀请:
1 个回复
靛新比比催