VSTO Addin Outlook Appointment событие удаления и записи запускается только при первом открытии

Я работаю над надстройкой Outlook, где я пытаюсь выполнить определенное действие, если оно удалено. Он прекрасно работает со всеми встречами, которые я уже открыл один раз. Когда встреча создается или удаляется из календаря, не открываясь первой, никакое событие (BeforeDelete, Write) не запускается.

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    inspectors = this.Application.Inspectors;
    inspectors.NewInspector +=
    new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector);
}
void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
{
    appointmentItem = Inspector.CurrentItem as Outlook.AppointmentItem;
    if (appointmentItem != null)
    {
        (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Send += _appointment_Send;
        (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).BeforeDelete += _appointment_Delete;
        (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Write += _appointment_Write;    
        (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Open += _appointment_Open;
        (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Close += _appointment_Close;
    }
}

Я хотел бы предположить, что объяснение заключается в том, что инспекторы прикреплены только тогда, когда назначение открыто, и что путь, по которому нужно идти, более похож на описанный здесь, но я не уверен. Приведенный выше код работает как брелок, исключаемый для конкретного случая, когда встреча не открывается перед удалением или созданием.

Любое руководство будет высоко ценится.

1 ответ

Да, BeforeWrite не срабатывает. Если я выберу встречу в Outlook и посмотрю на события, сгенерированные OOM с помощью OutlookSpy (выберите встречу, нажмите кнопку "Элемент", перейдите на вкладку "События" и посмотрите журнал внизу страницы, измените встречу в строке), я можно увидеть только следующие события огня.

BeforeDelete срабатывает, как и ожидалось, при удалении встречи.

PropertyChange (ConversationIndex)
PropertyChange (Subject)
PropertyChange (Start)
PropertyChange (StartInStartTimeZone)
PropertyChange (StartUTC)
PropertyChange (End)
PropertyChange (EndInEndTimeZone)
PropertyChange (EndUTC)
PropertyChange (Duration)
PropertyChange (AllDayEvent)
PropertyChange (StartInStartTimeZone)
PropertyChange (StartUTC)
PropertyChange (End)
PropertyChange (EndInEndTimeZone)
PropertyChange (EndUTC)
PropertyChange (Start)
PropertyChange (EndInEndTimeZone)
PropertyChange (EndUTC)
PropertyChange (Duration)
PropertyChange (End)
PropertyChange (MeetingStatus)
Write (false)
BeforeCheckNames (false)
AfterWrite ()
<Unknown(DispID=0x0000FC95)> (false)
Другие вопросы по тегам