Outlook拖放 - ActiveExplorer()。Selection()不包含所有项目

时间:2012-09-21 15:45:45

标签: c# outlook vsto outlook-addin outlook-redemption

在我的Outlook加载项中,我试图获取有关用户拖放到MAPI存储中的所有项目的信息(我正在使用Redemption库)。

我的第一次尝试是挂钩MessageCreated事件...

myRDOStore.OnMessageCreated += new IRDOStoreEvents_OnMessageCreatedEventHandler(myRDOStore_OnMessageCreated);

棘手的部分是我需要捕获与一个集合同时拖放的所有项目,我想这意味着持续存在每个新消息的某些方面(可能是EntryId)。

现在,问题显然是我无法将一堆任意事件的结果捆绑在一起,所以我正在调查ActiveExplorer().Selection集合并试图想出确定哪些项目的方法拖放到我的存储中。

我没有太多运气,因为集合的内容似乎有些随意(例如,当拖动1个项目时,Selection当我在事件处理程序中检查它时会有两个项目,或者当一系列事件触发时,例如选择中的2个项目,然后下一个事件中的1个,然后下一个事件中的1个)。

除此之外,我的一个用例是能够从Outlook外部拖动项目,我猜这些项目不会包含在Selection集合中。

这个问题有没有标准方法?这似乎是很常见的东西 - 将一堆文件拖入文件夹并能够获取它们作为集合的一些信息,但我无法弄明白。非常感谢任何指导。

1 个答案:

答案 0 :(得分:1)

经过一番研究后,我发现问题是掉线的电子邮件COM对象没有被释放。释放它们的最简单方法是调用e.Data.GetData(“RenPrivateMessages”);完成DragDrop事件处理程序中的拖放逻辑后的方法。