2016-09-21 3 views
1

VSTO(C#)を使用してOutlookのプラグインを作成していますが、予定のEntryIDを制御する方法に問題があります。すべての予定には一意のEntryIDがあります。このIDを保存しているので、Outlookのカレンダーを自分のシステムの予定表と同期させるのに役立ちます。問題は、誰かが会議に更新を送信し、これを受け入れることです - Outlookのアイテムは更新されていますが、EntryIDは異なります。私はこのプロセスの間に、古いアイテムは削除され、新しいアイテムは前のアイテムに基づいて作成されることを読んだ。 古いミーティングをキャッチしてEntryIDを取得し、新しいミーティングをキャッチし、EntryIDを取得するのに役立つイベントがありますか?これにより、私のシステムでEntryIDのミーティングを更新できますか?アポイントメント応答後のEntryID

答えて

1

イベントItems.Item.Add/ItemRemoveイベントを使用できますが、信頼できるとは思われません。特に、ItemRemoveイベントは削除されたアイテムに関する情報を渡しません。

実際には、予定のIDとしてエントリIDを使用することを避ける必要があります。GlobalAppointmentIdを使用してください。それは決して変更されず、同じ予定は別のメールボックスであってもGlobalAppointmentIdの同じ値を持ちます。

残念ながら、唯一の問題は、OOMは、あなたがItems.Find/FindNextメソッド/ RestrictGlobalAppointmentId(またはその他のPT_BINARYプロパティ)を検索させないということです。唯一の回避策は、予定表フォルダ(非常に非効率的な)内のすべての項目をループのいずれかにあるか、拡張MAPI(C++のみDelphi)またはRedemptionて検索(RDOFolderの任意の言語、それバージョンを。ItemsFindGlobalAppointmentIdに検索することができます)

+0

私の場合は 'GlobalAppointmentId'を使用すると本当に助かりました。予定の更新後に変更されないので、簡単に使えます。ありがとう! – user3762819