我正在嘗試開發一個AddIn - 或者說,現在只是一個概念驗證,看看我腦海中是否真的有可能 - 對於Outlook(準確地說),在.NET/C#中,我面臨以下問題:如何識別Outlook中的「我的」自定義文件夾AddIn
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時仍然存在,因此文件夾的創建失敗,因爲已存在同名對象。但我沒有看到任何方式如何判斷這是上次「我的」文件夾。
我不想依靠其名識別的文件夾(這只是太不可靠,甚至考慮;用戶可能想要重命名,其他加載項可能存在的是創建一個同名的文件夾,而不是提到本地化問題等),但我還可以使用什麼來確定自定義文件夾已經創建?
我要麼必須能夠以某種方式添加一個「標籤」做文件夾,以便以後我可以將其識別爲「我的」 - 或者需要某種類型的唯一標識該文件夾的標識符(並保持不變甚至在展望Outlook之間!),所以我可以通過它認出它。
我一直在尋找的[MAPI]Folder
對象的EntryID
和StoreID
領域,但在MSDN中的(可悲的是,不是很詳細)的說明,我不知道如果我能依靠他們,因爲顯然他們能在一定條件下改變。
有什麼建議嗎?
所以我現在使用EntryID來識別文件夾,但我不把它保存在隱藏的消息中;而是將其與AddIn的配置設置(存儲在用戶的應用程序數據配置文件夾中的文件中)保持在一起。不過,我會記住這個隱藏的消息技巧,以防萬一我的方法無法正常工作。 –