0

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

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

myRDOStore.OnMessageCreated += new IRDOStoreEvents_OnMessageCreatedEventHandler(myRDOStore_OnMessageCreated);

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

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

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

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

有没有解决这个问题的标准方法?这似乎是一件很常见的事情——将一堆文件拖到一个文件夹中,并能够作为一个集合获取关于它们的一些信息,但我就是想不通。非常感谢任何指导。

4

1 回答 1

1

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

于 2013-02-05T08:16:04.850 回答