【问题标题】:Outlook Drag and Drop - ActiveExplorer().Selection() doesn't contain all itemsOutlook 拖放 - ActiveExplorer().Selection() 不包含所有项目
【发布时间】:2013-11-28 19:00:15
【问题描述】:

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

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

myRDOStore.OnMessageCreated += new IRDOStoreEvents_OnMessageCreatedEventHandler(myRDOStore_OnMessageCreated);

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

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

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

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

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

【问题讨论】:

  • 尝试将您的问题缩小到特定用例,而不是尝试通过一篇文章解决所有拖放问题。清楚地说明您从哪里拖动(Outlook、WPF、WinForms、Explorer 等)以及要拖动到哪里 - 很难理解。确定来源和目标将使我们更容易为您提供指导。
  • @SliverNinja:抱歉,我写帖子的时候有点着急。我的来源是 Outlook 和 Explorer,我的目标是 Outlook。实际上,我已经提出了一个我对使用计时器相当满意的解决方案。有机会我会把代码贴出来,以防其他人有用。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    相关资源
    最近更新 更多