首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对COMVisible对象现有实例的引用

对COMVisible对象现有实例的引用
EN

Stack Overflow用户
提问于 2013-03-12 23:22:07
回答 1查看 521关注 0票数 0

我有两个.NET项目,我想在它们之间创建一个双向通信。ProjectA是一个共享插件,可以在MS Office应用程序中创建功能区。ProjectB是一款WinForms应用程序,用于从服务器收集信息或向服务器发送信息。

我已经创建了一个接口IAddInCommunication,它定义了我想要从ProjectB调用的方法。此接口位于一个单独的类库项目中。ProjectA中的Connect类实现了IAddInCommunication接口(以及其他一些接口)。我还在ProjectB中添加了对接口的DLL的引用。

现在,我正在尝试调用共享外接程序的方法,例如,它在MS Word中运行。为了实现这一点,我使用以下代码(用ProjectB编写):

代码语言:javascript
复制
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通信。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-13 20:59:59

您可能正在寻找:

代码语言:javascript
复制
(IAddInCommunication)System.Runtime.InteropServices.Marshal.GetActiveObject(Pro‌​gId);

从正在运行的对象表中获取一些内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15365184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档