3

背景:

我正在设计一个应用程序,该应用程序允许将项目拖到它上面,并在它们上调用一些长时间运行的进程。这些项目通常会从文件系统和 Outlook 中拖入。我关心的是后者。

如何连接到 Outlook 以查明是否已将一条(或多条)消息拖出并拖到我的应用程序上,以及消息 ID 是什么?

我知道 Outlook 对象模型没有这样的拖放事件,一种解决方案是收听Windows 消息- 这在团队中是不可行的,因为我们的组合互操作知识不是很好。

我们将在 Visual Studio 2010 中使用 C# 4.0 来开发此应用程序。

4

2 回答 2

3

即使这是一个老问题,实际上也有办法。它是无证的,但我至少能够对它进行逆向工程。我不确定“选择”方法是否仍然更干净,但我更喜欢直接读取数据。

可以在此处找到示例和文档: https ://github.com/yasoonOfficial/outlook-dndprotocol

于 2014-01-03T14:35:24.603 回答
1

您无法通过通用拖放界面MailItem.EntryID直接从 Outlook访问。IDataObject如果您只想访问 MSG 数据,那么您可以使用这个 CodeProject 示例。一旦将 MSG 复制到磁盘(或剪贴板、拖放等),它就会丢失对EntryID.

我知道访问 的唯一方法EntryID是使用VSTO并使用ActiveExplorer().Selection来查看在放置操作时选择了哪些项目。以下是在拖放命令期间访问所选邮件正文的示例。一旦看到使用的一般模式,您应该能够找到大量示例。

于 2012-05-21T13:19:28.367 回答