Netoffice — Надстройка Outlook — Доступ к событиям папки

У меня есть проект VBA для Microsoft Office Outlook, который я хотел бы переписать как надстройку Outlook с помощью NetOffice.

Вот фрагмент кода VBA, который я хотел бы передать:

Dim objNS As Outlook.NameSpace
Set objNS = Application.GetNamespace("MAPI")
Set m_colCalendarItems = objNS.GetDefaultFolder(olFolderCalendar).Items

Application представляет запущенное приложение Outlook.

Мой соответствующий код в NetOffice выглядит так:

Outlook.Application objApp = Outlook.Application.GetActiveInstance();
Outlook._NameSpace objNS = (Outlook._NameSpace)objApp.GetNamespace("MAPI");
m_colCalendarItems = (Outlook.Items)objNS.GetDefaultFolder(OlDefaultFolders.olFolderCalendar).Items;

Довольно много бросков, конечно, с этим можно справиться лучше. Но главная проблема в том, что я не получаю ссылку на запущенное приложение в первой строке (objApp равно null). Хотя этот код находится в подпрограмме Addin_OnStartupComplete.

Любые советы о том, как настроить это лучше?


person Christian Treffler    schedule 29.12.2016    source источник


Ответы (1)


Я нашел решение. Фрагмент кода, который я публикую, выполняется в методе класса. Он вызывается из Addin_OnStartupComplete в классе Addin (автоматически генерируется NetOffice Developer Toolbox). Я могу получить ссылку на работающее приложение: это свойство Application класса Addin. Я могу предоставить это вызываемому методу:

public class Addin : Outlook.Tools.COMAddin // this was auto-generated by the NetOffice Developer Toolbox
{
    FolderEvents m_folderevents = new FolderEvents(); // 'FolderEvents' is my class

    // additional auto-generated code removed

    private void Addin_OnStartupComplete(ref Array custom)
    {
        m_folderevents.InitFolders(this.Application);
    }
}
person Christian Treffler    schedule 30.12.2016