我正在尝试开发一个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的配置设置(存储在用户的应用程序数据配置文件夹中的文件中)保持在一起。不过,我会记住这个隐藏的消息技巧,以防万一我的方法无法正常工作。 –