共用方式為


IManagedAddin 介面

請實作 IManagedAddin 介面,建立可載入 Managed 增益集的元件。 此介面已加入 2007 Microsoft Office System 中。

[
    object,
    uuid(B9CEAB65-331C-4713-8410-DDDAF8EC191A),
    pointer_default(unique),
    oleautomation
]
interface IManagedAddin : IUnknown
{
    HRESULT Load(
        [in] BSTR bstrManifestURL, 
        [in] IDispatch *pdispApplication);
    HRESULT Unload();
};

方法

下表列出 IManagedAddin 介面所定義的方法。

名稱

描述

IManagedAddin::Load

當 Microsoft Office 應用程式載入 Managed 增益集時呼叫。

IManagedAddin::Unload

只在 Microsoft Office 應用程式卸載 Managed 增益集之前呼叫。

備註

自 2007 Microsoft Office System 開始,Microsoft Office 應用程式會使用 IManagedAddin 介面協助載入 Office 增益集。 您可以實作 IManagedAddin 介面,針對 Managed 增益集建立自己的增益集載入器和執行階段,而不要使用增益集載入器 (VSTOLoader.dll) 和 Visual Studio Tools for Office Runtime。 如需詳細資訊,請參閱應用程式層級增益集的架構

Managed 增益集的載入方式

應用程式啟動時會執行下列步驟:

  1. 應用程式會尋找下列登錄機碼 (Registry Key) 底下的項目,以探索增益集:

    HKEY_CURRENT_USER\Software\Microsoft\Office\<application name>\Addins\

    此登錄機碼下的每個項目都是增益集的唯一識別碼。 通常這是增益集組件的名稱。

  2. 應用程式會在每個增益集項目底下尋找 Manifest 項目。

    Managed 增益集可以將資訊清單的完整路徑儲存在 HKEY_CURRENT_USER\Software\Microsoft\Office\<application name>\Addins\<add-in ID> 底下的 Manifest 項目中。 資訊清單是一種檔案 (通常是 XML 檔案),可提供協助載入增益集的資訊。

  3. 如果應用程式尋找的是 Manifest 項目,則該應用程式會嘗試載入 Managed 增益集載入器元件。 應用程式會嘗試建立實作 IManagedAddin 介面的 COM 物件,以完成此步驟。

    Visual Studio Tools for Office Runtime 包含增益集載入器元件 (VSTOLoader.dll);您也可以透過實作 IManagedAddin 介面來建立自己的增益集載入器元件。

  4. 應用程式會呼叫 IManagedAddin::Load 方法,並傳入 Manifest 項目的值。

  5. IManagedAddin::Load 方法會執行載入增益集所需的工作,例如設定要載入之增益集的應用程式定義域和安全性原則。

如需 Microsoft Office 應用程式用來探索及載入 Managed 增益集之登錄機碼的詳細資訊,請參閱應用程式層級增益集的登錄項目

實作 IManagedAddin 的指引

如果實作 IManagedAddin,您必須使用下列 CLSID 登錄包含該實作 (Implementation) 的 DLL:

99D651D7-5F7C-470E-8A3B-774D5D9536AC

Microsoft Office 應用程式會使用這個 CLSID 建立實作 IManagedAddin 的 COM 物件。

警告

Visual Studio Tools for Office Runtime 中的 VSTOLoader.dll 也會使用這個 CLSID。 因此,如果使用 IManagedAddin 建立自己的增益集載入器和執行階段元件,就不能將元件部署到執行依賴 Visual Studio Tools for Office Runtime 之增益集的電腦上。

請參閱

其他資源

Unmanaged API 參考 (Visual Studio 中的 Office 程式開發)