如何使用VSTO AddIn爲Outlook 2003中的聯繫人文件夾/聯繫人項目的SendAndReceive
事件附加事件處理程序?我試過使用:掛接到Outlook聯繫人的發送/接收同步事件
Application.ActiveExplorer().SyncObjects.ForEach
{
SyncObject.SyncEnd += \\Do something
}
但它不工作。
如何使用VSTO AddIn爲Outlook 2003中的聯繫人文件夾/聯繫人項目的SendAndReceive
事件附加事件處理程序?我試過使用:掛接到Outlook聯繫人的發送/接收同步事件
Application.ActiveExplorer().SyncObjects.ForEach
{
SyncObject.SyncEnd += \\Do something
}
但它不工作。
我試圖
Application.ActiveExplorer().SyncObjects.AppFolders.SyncEnd += \\EventHandler
此掛鉤發送/接收所有默認文件夾..
其實我的需求有點不同,但可能是一樣的: 我希望在發送/接收之後得到一個文件夾(在我的情況下爲約會)變化的通知。 我的第一個想法(我認爲你在同一軌道上)是檢查發送/接收事件,並可能從中收集某些項目或類似的東西,但沒有這樣的事情可用。 (如也在this forum post解釋)
我的第二個路徑來自於following article:我可以對文件夾的Item_Add
和Item_Change
(甚至Item_Removed
)事件(其中也被接收的發送完成的改變觸發註冊):
一些代碼:
// Get the folder calendar folder and subscribe to the events.
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar).Items.ItemAdd += new Microsoft.Office.Interop.Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);
Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar).Items.ItemChange += new Microsoft.Office.Interop.Outlook.ItemsEvents_ItemChangeEventHandler(Items_ItemChange);
}
// Do something with it.
void Items_ItemAdd(object Item)
{
logItem(Item, "Add");
}
void logItem(object Item, string Action)
{
Outlook.AppointmentItem item = Item as Outlook.AppointmentItem;
File.AppendAllText(@"e:\log.txt", string.Format("Item {0}: {1}", Action, Item));
if (item != null)
{
File.AppendAllText(@"e:\log.txt", " - Appointment: " + item.Subject);
}
}
您可以連接郵件發送/接收事件,然後檢查郵件類型是ContactItem。以下是發送事件的示例。
// hook up the event
this.Application.ItemSend += ThisApplication_SentMail;
然後在您的事件處理程序中檢查郵件項目類型;
internal void ThisApplication_SentMail(object item, ref bool cancel)
{
Outlook.ContactItem contactItem = item as Outlook.ContactItem;
// mail message is not a ContactItem, so exit.
if (contactItem == null) return;
// do whatever you need to here
}