2012-01-20 7 views
2

私はAddInを開発しようとしています。Outlook AddInの「私の」カスタムフォルダを特定する方法

AddInは新しいカスタムフォルダを提供するはずです(階層の最上位にあります。つまり、タスク、カレンダー、連絡先などの他のすべての主要アイテム)を使用して、ユーザーにアイテムを提供します。だから私はアドインのスタートアップメソッドで、私は単に何かをすることができたと思った

Outlook.Folder parent = inBox.Parent as Outlook.Folder; 
Outlook.Folder myCustomFolder = (Outlook.Folder)parent.Folders.Add("My Custom Folder"); 

...それは実際に動作します。ただし、Outlookを終了してもう一度起動してから問題が発生します。フォルダはOutlookによって永続化されているため、次回Outlookが起動してAddInを再度初期化するときにも同じフォルダが存在するため、同じ名前のオブジェクトが既に存在するためフォルダの作成に失敗します。しかし、私は前回からこのフォルダが "私"であることをどのように伝えるべきかわかりません。

私はそれも考慮することがあまりにも信頼できないのです(フォルダを識別するために、その 名前に依存したくない

、ユーザーは、他のアドインが、それは同じ名前のフォルダを作成しない存在する可能性があり、それを名前を変更したい場合がありますローカリゼーションの問題など)がありますが、カスタムフォルダがすでに作成されていることを確認するために他に何が使えますか?

"タグ"をフォルダに追加して後で "私のように"認識できるようにするか、フォルダを一意に識別する何らかのIDが必要ですOutlookの起動間でも!)私はそれを認識することができます。

私は[MAPI]FolderオブジェクトのEntryIDStoreIDフィールドを見てきたが、MSDNで(悲しいことに、非常に詳細ではない)の記述から、私は、私は彼らに頼ることができるかどうかわからないんだけど、どうやら彼らができるので、特定の条件の下で変更します。

提案がありますか?

答えて

1

フォルダを削除してから再作成しない限り、エントリは変更されません。とにかく同じフォルダではなく、同じ名前の別のフォルダになります。 Outlookは、特別なフォルダのエントリIDをルートIPMフォルダおよび/または受信トレイフォルダに格納します。 Exchange内のフォルダに名前付きプロパティを設定することはできず、競合が発生するリスクを負わずに独自のプロパティタグを選択することはできませんので、Inboxフォルダ(常にデフォルトストアに存在します)あなたが必要とするかもしれない他の設定プロパティと一緒にあなたの設定隠しメッセージが一意であることを確認するには、一意のメサージクラスを選択します。 IPM.Note.MyCompany.MyAdddin.Config。 隠しメッセージには、Outlook Object ModelのMAPIFolder.GetStorageまたはRedemptionのRDOFolder.HiddenItemsを使用してアクセスできます。

+0

私は今EntryIDを使ってフォルダを識別していますが、隠しメッセージに保存しません。代わりに私はAddInの構成設定(ユーザーのアプリケーションデータプロファイルフォルダ内のファイルに格納されている)と一緒に保存します。私は隠れたメッセージのトリックを心に留めておきます。ちょうど私の方法がうまくいかない場合に備えて、私は望みます。 –

関連する問題