将项目拖出Outlook - 记录消息ID

时间:2012-05-21 10:16:00

标签: c#-4.0 drag-and-drop outlook office-interop

背景:

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

如何挂钩到Outlook以查明是否已将某条消息(或多条消息)拖出我的应用程序以及消息ID是什么?

据我所知,Outlook对象模型没有这样的拖放事件,一个解决方案是收听Windows messages - 这在团队中是不可行的,因为我们的组合Interop知识不是很好。< / p>

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

2 个答案:

答案 0 :(得分:3)

即使这是一个老问题,实际上还有一种方法。它没有记录,但我能够至少在一半的时间内对此进行逆向工程。我不确定“选择”方法是否仍然更清晰,但我更喜欢直接读取数据。

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

答案 1 :(得分:1)

您无法通过通用MailItem.EntryID拖放界面直接从Outlook访问IDataObject。如果您只想访问MSG数据,则可以使用this CodeProject example。将MSG复制到磁盘(或剪贴板,拖放等等)后,它将丢失对EntryID的任何引用。

我知道访问EntryID的唯一方法是使用VSTO并使用ActiveExplorer().Selection查看放弃操作时选择的项目。在拖放命令期间Here is an example of accessing the Body of a selected message。一旦看到正在使用的一般模式,您应该能够找到许多示例。