3/3/16Создание Bare Bones, неуправляемый Outlook/Офис Аддин
Я хочу, чтобы написать чистый, голые кости, неуправляемый COM надстройку для Microsoft Outlook/Office с помощью C++. Visual Studio заставляет вас использовать библиотеку активных шаблонов и скрывает всю базовую реализацию того, как хост (Outlook) подключается к добавлению. Вот немного информации о том, что я знаю до сих пор:
Я знаю основные принципы работы COM и как это работает. Из моего понимания архитектуры я пришел к выводу, что, поскольку Outlook написан поверх COM, я, безусловно, должен иметь возможность запрашивать его интерфейсы и манипулировать приложением.
Я знаю, что мне нужно использовать интерфейс IDTExtensibility2 для подключения к офисным приложениям. Кто-нибудь знает имя файла заголовка, которое содержит определение для этого интерфейса?
Я знаю, что мне нужно зарегистрировать addin в реестре. Это COM-сервер, поэтому это ожидается.
Помимо этих пунктов, я потерян. Мне нужно знать шаг 1. Кто-нибудь может предоставить какой-либо тип ссылки или какой-то код?
И для записи я не хочу использовать VS, потому что я хочу знать, как создать добавление с нуля. Я хочу знать, какие компоненты необходимо, а не то, что предусмотрено в пакете.
EDIT 3/4/16
Так что я наткнулся на эту ссылку на MSDN:
https://msdn.microsoft.com/en-us/library/office/ff867268.aspx
Я не знаю, как я пропустил это, но это выглядит как хорошая отправная точка. Я думаю, что мой единственный зависание - это то, что использовать заголовки. Это может быть приключение, которое я должен предпринять, чтобы выяснить, какие из них необходимы для добавления голых костей. Я сделаю некоторые исследования и доложу об этой теме.
Ok поэтому я предполагаю, что _IDTExtensibility2 реализуется в MSADDNDR .dll, и я предполагаю, что это первичная dll для импорта. Существуют ли какие-либо другие базовые DLL, из которых необходимо импортировать? Должно ли приложение Outlook быть передано в _IDTExtensibility2 :: OnConnection? Если да, то как это пройти? –
MSADDNDR.dll не реализует интерфейс _IDTExtensibility2. Он определяет его в библиотеке типов, встроенной в качестве ресурса. Ничто не мешает вам жестко кодировать определение интерфейса _IDTExtensibility2 в вашем коде. Вы не передаете объект Application методу IDTExtensibility2 :: OnConnection, Outlook сделает это для вас, когда он вызовет вашу реализацию. Параметр объявляется как общий IDispatch. Вы можете получить доступ к нему с помощью позднего связывания или вы можете импортировать определение библиотеки типов Outlook из файла MSOUTL.OLB. –
У вас есть письменный пример, который вы можете поделиться? Я был бы очень признателен. Я бы только ссылался на него в образовательных целях. –