您好,我对 Outlook 2010 拖放到各种应用程序中的功能有疑问。我目前可以抓取附件并将其拖放到桌面上,没有任何问题。如果我在 Outlook 中双击附件,它将在相应的默认应用程序中打开它。没有问题。我认为发生的事情是文件被临时保存到临时位置,然后从那里打开。问题是当我尝试将附件拖到另一个应用程序中时。
例如将文本文档导入 Notepad++、将 CAD 文件导入 AutoCAD 等。这些应用程序通常可以直接从桌面拖放文件并直接打开文件。而从 Outlook 中,我必须将它们拖到桌面,然后将桌面文件拖到应用程序中。这是一个需要移动窗口等的多步骤过程。如果可能的话,我希望避免这种情况。
我想问的是,我可以让 Outlook 自动将附件下载到永久位置并将其链接到电子邮件,这样当我拖放时,我可以直接转到我的应用程序吗?或者即使我必须手动下载每封电子邮件的文件,只需打开该位置的资源管理器窗口,然后我就可以从那里拖放?
答案1
对于 Web 应用程序,Outlook File Drag 就是您要找的。 https://github.com/tonyfederer/OutlookFileDrag
它适用于附件,但不适用于内置邮件图片。尽情享受吧
答案2
当应用程序启动拖拽时,它会通过将可用格式放入 IDataObject 中来指定可供拖拽的内容。当“放置目标”收到拖拽事件时,它可以查询可用格式以查看是否可以接受数据。
它非常复杂,因此大多数放置目标仅接受非常基本的 CF_HDROP 格式,而 Outlook 似乎不提供该格式。
解决此问题的唯一方法是使用另一个可以读取 PST 文件并处理拖放源中的 CF_HDROP 的应用程序,或者使用类似上述工具从电子邮件中删除附件并让 Explorer 处理拖放操作。
答案3
如果您想将附件从 Outlook 拖到 Web 应用程序,您可以在 Outlook 中安装 Outlook2Web 插件。我认为它不适用于桌面应用程序,只适用于 Web 应用程序。
答案4
更多有用的评论:https://connect.microsoft.com/IE/feedback/details/867235/html5-fileapi-file-input-does-not-support-dragging-and-dropping-from-outlook以及用于接收应用程序的 Java 库http://www.wilutions.com/outldd/example.html
Tl;dr:Outlook 不应提供 CF_HDROP,因为 CF_HDROP 仅适用于本地磁盘上存在的文件。如果它提供 CF_HDROP,则必须先将文件复制到本地磁盘,这会导致延迟。
相反,其他投放目标应该接受什么外表提供,即:
- CFSTR_文件内容
- CFSTR_FILEDESCRIPTOR