我有两个.NET项目,我想在它们之间创建一个双向通信。ProjectA是一个共享插件,可以在MS Office应用程序中创建功能区。ProjectB是一款WinForms应用程序,用于从服务器收集信息或向服务器发送信息。
我已经创建了一个接口IAddInCommunication,它定义了我想要从ProjectB调用的方法。此接口位于一个单独的类库项目中。ProjectA中的Connect类实现了IAddInCommunication接口(以及其他一些接口)。我还在ProjectB中添加了对接口的DLL的引用。
现在,我正在尝试调用共享外接程序的方法,例如,它在MS Word中运行。为了实现这一点,我使用以下代码(用ProjectB编写):
const string ProgId="ProjectA.Connect";
//...
Type officeAddInType = Type.GetTypeFromProgID(ProgId);
object obj = Activator.CreateInstance(officeAddInType);
_remoteAddIn = (IAddInCommunication)obj;
_remoteAddIn.TestMethod("Hello");问题是,_remoteAddIn没有指向在Office中运行的实例。这只是一个新实例(不出所料)。如何连接到共享插件的实际运行实例?
我使用SendMessage应用程序接口解决了从ProjectA到ProjectB的通信,因为我的应用程序无论如何都需要它。如果真的没有更好的方法,我只会在我的插件中实现SendMessage通信。
发布于 2013-03-13 20:59:59
您可能正在寻找:
(IAddInCommunication)System.Runtime.InteropServices.Marshal.GetActiveObject(ProgId);从正在运行的对象表中获取一些内容。
https://stackoverflow.com/questions/15365184
复制相似问题