2017-09-02 35 views
0

我正在使用Outlook插件,我嘗試執行特定操作(如果刪除)。它對所有我已經打開過的約會都可以正常工作。當約會被創建或從日曆中刪除而未被打開時,首先沒有事件(BeforeDelete,Write)被觸發。VSTO Addin Outlook約會刪除和寫入事件只有打開後纔會觸發

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; 
    } 
} 

我假設的解釋就在於檢查員僅在任命是開放的連接和路徑,遵循的是更多的東西一樣描述here,但我不知道。上述代碼的作用就像是一種魅力,除非在約會被刪除或創建之前未打開的具體情況例外。

任何指導將不勝感激。

回答

1

是的,BeforeWrite不會觸發。如果我在Outlook中選擇約會並使用OutlookSpy查看OOM觸發的事件(選擇約會,單擊項目按鈕,轉到事件選項卡並查看頁面底部的日誌,修改約會內聯),I只能看到以下事件發生。

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) 
+0

+1對於我不知道的OutlookSpy。奇怪的是,寫事件如果被解僱,因此應該是我可以捕獲的東西。不幸的是,它不會發生。這可能是由於檢查員檢查currentItem是否來自Outlook約會類型。在沒有打開的情況下進行編輯時,我認爲該值爲空。 – Salim

相關問題