从我的应用程序中拖出文件时如何获取目标路径
How to get destination path when drag out a file from my application
我完成了一个实现 ole 拖放的小演示。
我的应用程序如下所示:
将项目从 TListView 拖到系统资源管理器时可能会导致 copy.I 使用 IDropSource、IDataObject 和 OLE
剪贴板格式 CF_HDROP 来实现,所以我永远不需要在我的
中知道要复制到的目标路径
代码。
有什么方法可以让我知道目标路径吗?
我需要一个解决方案,在此先感谢!
抱歉,没有办法发现目的地,您也不需要知道它。 OLE 拖放不公开该信息。您提供源数据,目标决定如何处理它,然后告诉您结果是否为 copy/move/link,以便您可以相应地清理源数据。
在这种情况下,您提供一个文件名作为源,Explorer 会为您将文件复制到目标文件夹。想一想如果将文件放入没有文件系统路径的虚拟文件夹中会发生什么。该文件仍然可以复制(如果您在源数据中提供 CFSTR_FILEDESCRIPTOR
和 CFSTR_FILECONTENT
则更是如此)。这对于 OLE 来说是完全可以接受的,以及为什么拖放是这样抽象的。
我完成了一个实现 ole 拖放的小演示。
我的应用程序如下所示:
将项目从 TListView 拖到系统资源管理器时可能会导致 copy.I 使用 IDropSource、IDataObject 和 OLE
剪贴板格式 CF_HDROP 来实现,所以我永远不需要在我的
中知道要复制到的目标路径代码。
有什么方法可以让我知道目标路径吗?
我需要一个解决方案,在此先感谢!
抱歉,没有办法发现目的地,您也不需要知道它。 OLE 拖放不公开该信息。您提供源数据,目标决定如何处理它,然后告诉您结果是否为 copy/move/link,以便您可以相应地清理源数据。
在这种情况下,您提供一个文件名作为源,Explorer 会为您将文件复制到目标文件夹。想一想如果将文件放入没有文件系统路径的虚拟文件夹中会发生什么。该文件仍然可以复制(如果您在源数据中提供 CFSTR_FILEDESCRIPTOR
和 CFSTR_FILECONTENT
则更是如此)。这对于 OLE 来说是完全可以接受的,以及为什么拖放是这样抽象的。