Снегопат https://snegopat.ru/forum/ |
|
Документация на IAddinLoader https://snegopat.ru/forum/viewtopic.php?f=1&t=615 |
Страница 1 из 1 |
Автор: | EvilBeaver [ 26 май 2014, 21:31 ] |
Заголовок сообщения: | Документация на IAddinLoader |
Здравствуйте, коллеги. Есть вопрос по интерфейсу IAddinLoader. Не нашел в описании API, что представляет собой этот интерфейс. Поиск по форуму говорит, что я такой не один: viewtopic.php?f=3&t=546&p=6120&hilit=IAddinLoader#p6120 Где взять описание этого интерфейса? |
Автор: | orefkov [ 27 май 2014, 09:29 ] |
Заголовок сообщения: | Re: Документация на IAddinLoader |
Если просто состав методов - то можно просмотреть любым просмотрщиком библиотек типов, хоть в 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 |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |