Если просто состав методов - то можно просмотреть любым просмотрщиком библиотек типов, хоть в VBA от офиса.
В моих исходниках он описан так:
Код:
[uuid("2BEEF9E6-AF34-4593-9E73-3D07EAA4CF0D"),version(1.0),nonextensible,helpstring("Интерфейс загрузчика аддинов")]
interface IAddinLoader: IUnknown
{
meth(proto, "Получить название протокола загрузки")(_ret BSTR* result);
meth(load, "Загрузить аддин")(_in BSTR uri, [out] BSTR* fullPath, [out] BSTR* uniqueName, [out] BSTR* displayName, _ret IUnknown** result);
meth(canUnload, "Можно ли выгрузить аддин")(_in BSTR fullPath, _in IUnknown* addin, _ret VARIANT_BOOL* result);
meth(unload, "Выгрузить аддин")(_in BSTR fullPath, _in IUnknown* addin, _ret VARIANT_BOOL* result);
meth(loadCommandName, "Текстовое представление команды для загрузки")(_ret BSTR* result);
meth(selectLoadURI, "Выбрать что загрузить")(_ret BSTR* result);
};
Реализация этого интерфейса в своем аддине и регистрация объекта методом Designer::registerLoader позволяет расширить типы загружаемых снегопатом аддинов.
Вкратце по методам:
virtual HRESULT STDMETHODCALLTYPE proto(BSTR *result) = 0;
должен вернуть название "протокола", то есть начальной части до двоеточия строки-описания аддина.
По этой части снегопат определяет, какой загрузчик должен загрузить данный аддин.
Например, ваш загрузчик загружает аддины, которые начинаются с "1ceng:"
Значит, данный метод должен вернуть "1ceng".
virtual HRESULT STDMETHODCALLTYPE load(BSTR uri, BSTR *fullPath, BSTR *uniqueName, BSTR *displayName, IUnknown **result) = 0;
загружает аддин. В uri передается строка загрузки аддина. В fullPath, uniqueName, displayName - загрузчик должен вернуть
соответствующие данные об загруженном аддине. Сам метод должен вернуть IUnknown - объект, представляющий загруженный аддин.
Данный объект может дополнительно реализовывать интерфейсы IAddinMenu, IAddinMacroses, IAddinObject.
virtual HRESULT STDMETHODCALLTYPE canUnload(BSTR fullPath, IUnknown *addin, VARIANT_BOOL *result) = 0;
Должен сообщить, можно ли выгрузить данный аддин. Передается полный путь к аддину и объект аддина.
virtual HRESULT STDMETHODCALLTYPE unload(BSTR fullPath, IUnknown *addin, VARIANT_BOOL *result) = 0;
Выгрузить аддин, если это возможно.
virtual HRESULT STDMETHODCALLTYPE loadCommandName(BSTR *result) = 0;
Должен вернуть строку, описывающую команду в меню снегопата для загрузки аддинов данного типа.
Например, встроенный загрузчик длл реализует так:
Код:
HRESULT STDMETHODCALLTYPE DLLLoader::loadCommandName(BSTR *result)
{
*result = SysAllocString(L"Загрузить dll|dll");
return S_OK;
}
Строка состоит из двух частей, разделенных знаком "|".
Сначала идет текст команды меню, а затем название протокола загрузчика.
virtual HRESULT STDMETHODCALLTYPE selectLoadURI(BSTR *result) = 0;
Должен осуществить интерактивный выбор пользователем загружаемого аддина и вернуть строку - описание аддина.
В принципе, все методы, кроме proto и load, могут возвращать E_NOTIMPLEMENTED, если аддины не надо перезагружать либо
загружать интерактивно без addins.ini