背景:
我正在设计一个应用程序,它允许将项目拖到它上面,并在它们上调用一些长时间运行的流程。这些项目通常会从文件系统和Outlook中拖入。我关心的是后者。
如何连接到Outlook以确定是否已将一封(或多封)邮件拖出并放到我的应用程序中,以及邮件ID是什么?
我知道Outlook对象模型没有这样的拖放事件,一种解决方案是监听Windows messages -这在团队中是不可行的,因为我们的联合互操作知识不是很好。
我们将使用Visual Studio2010中的C# 4.0来开发此应用程序。
发布于 2012-05-21 21:19:28
您不能通过通用的IDataObject拖放界面直接从Outlook访问MailItem.EntryID。如果您只想访问味精数据,那么可以使用this CodeProject example。一旦消息被复制到磁盘(或剪贴板、拖放等),它将丢失对EntryID的任何引用。
据我所知,访问EntryID的唯一方法是使用VSTO并使用ActiveExplorer().Selection查看在执行drop操作时选择了哪些项。在执行拖放命令时出现Here is an example of accessing the Body of a selected message。一旦您看到正在使用的一般模式,您应该能够找到大量的示例。
发布于 2014-01-03 22:35:25
即使这是一个古老的问题,实际上也有一种方法。这是没有文档记录的,但我至少在一半的路程中实现了逆向工程。虽然我不确定“选择”-method是否仍然更干净,但我更喜欢直接读取数据。
可以在以下位置找到示例和文档:https://github.com/yasoonOfficial/outlook-dndprotocol
https://stackoverflow.com/questions/10683371
复制相似问题