【发布时间】:2009-07-11 00:36:20
【问题描述】:
我用 C# 和 .NET 2.0 编写了一个 Office 共享插件。它对所有办公应用程序使用相同的 COM Shim。目前,每个实例都创建自己的类实例——他们不知道加载项正在另一个应用程序上运行。
是否可以这样,例如,当 Word 加载项启动时,它可以检测到 Excel 加载项已经在运行?可以互相交流吗?
假设我的 dll 称为 Addin.dll。例如,当 Word 打开时,它会运行 Addin.dll 中实现 IExtensibility 接口的代码,并创建一个类,我们称之为 WordAddin。当 Excel 打开时,它还会运行 Addin.dll 中的代码,并创建 ExcelAddin 的一个实例。现在,假设 Word 正在运行并且 WordAddin 存在。打开 Excel 时,Addin.dll 被加载到不同的 AppDomain。它不知道 WordAddin 的存在。我希望 ExcelAddin 知道 WordAddin 的存在,并能够与它通信,也许通过创建两者的父类。
有人知道怎么做吗?
【问题讨论】: