2009-06-18 29 views
1

SendAndReceiveイベントハンドラを連絡先フォルダのイベントに添付するにはどうすればよいですか?Outlook 2007の連絡先アイテムはVSTO AddInを使用しますか?私は使用しようとしました:Outlookの連絡先の送受信イベントへのフック

Application.ActiveExplorer().SyncObjects.ForEach 
{ 
    SyncObject.SyncEnd += \\Do something 
} 

しかし、それは動作していません。

答えて

2

私は

。これは、すべてのデフォルトのフォルダの受信/送信するためのフック

Application.ActiveExplorer().SyncObjects.AppFolders.SyncEnd += \\EventHandler 

を試してみました

0

実際に私のニーズは少し異なりますが、同じかもしれません。 送受信後にフォルダ(私の場合は予定)の変更を通知したかったのです。 私の最初の考え(と私はあなたが同じトラックにいると思う)は、送信/受信イベントをチェックし、多分それから何かのアイテムのコレクションを取得するか、それと似たようなものがあります。

(も this forum postに説明されているように)私の第二の経路が following articleから来た:私はまた、受信、送信によって行われた変更によってトリガされているフォルダ(の Item_AddItem_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); 
    } 
} 
0

あなたは/メール送信をフックアップイベントを受信して​​から、メールの種類が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 

} 
関連する問題