挂接Outlook联系人的发送/接收同步事件
如何使用VSTO加载项为Outlook 2007中联系人文件夹/联系人项目的挂接Outlook联系人的发送/接收同步事件,outlook,vsto,ms-office,Outlook,Vsto,Ms Office,如何使用VSTO加载项为Outlook 2007中联系人文件夹/联系人项目的send和receive事件附加事件处理程序?我尝试使用: Application.ActiveExplorer().SyncObjects.ForEach { SyncObject.SyncEnd += \\Do something } 但它不起作用。实际上,我的需求有点不同,但可能是相同的: 我希望在发送/接收后收到文件夹更改的通知(在我的情况下是约会)。 我的第一个想法(我想你也在同一条轨道上)是检查发送/
send和receive
事件附加事件处理程序?我尝试使用:
Application.ActiveExplorer().SyncObjects.ForEach
{
SyncObject.SyncEnd += \\Do something
}
但它不起作用。实际上,我的需求有点不同,但可能是相同的: 我希望在发送/接收后收到文件夹更改的通知(在我的情况下是约会)。 我的第一个想法(我想你也在同一条轨道上)是检查发送/接收事件,也许从中获得一些项目集合或类似的东西,但没有这样的东西可用。(如中所述) 我的第二条路径来自:我可以注册到文件夹的
Item\u Add
和Item\u Change
(甚至Item\u 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。下面是Send事件的一个示例
// 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
}
我试过了
Application.ActiveExplorer().SyncObjects.AppFolders.SyncEnd += \\EventHandler
这将钩住所有默认文件夹的发送/接收