【问题标题】:Drop file from ListView to Windows Explorer将文件从 ListView 拖放到 Windows 资源管理器
【发布时间】:2014-09-17 15:13:04
【问题描述】:

好的。这看起来不可能,但由于很多程序都有这种功能,我想知道如何。所以,这就是交易。我有一个程序可以将计算机上存在的文件加载到 ListView 控件中。我可以通过从 Windows 资源管理器中拖动文件来将文件插入 ListView。问题是,如何将文件从 ListView 导出到 Windows 资源管理器。我经历了很多 Stackoverflow 问题,很多论坛帖子,但仍然没有找到解决方案。我只需要知道如何获取我放置项目的对象的路径。例如,我将我的项目从 ListView 拖放到 Windows 资源管理器窗口中。如何获取该窗口打开的文件夹的路径?

如果我没有很好地描述我的问题,我很抱歉。

【问题讨论】:

  • 我认为这是解决您问题的方法[使用 DoDragDrop 拖放到资源管理器][1] [1]:stackoverflow.com/questions/3040415/…
  • 不是。我只需要删除文件的路径。只有一个包含路径的字符串。 @sev
  • 为什么需要目标文件夹的路径?
  • 所以我可以使用File.Copy(PathToWhereMyFileIs, PathOfWhereTheFileIsDropped); @DenisAnisimov
  • 在正常情况下,资源管理器或任何其他应用程序都支持自行拖放复制文件。您唯一需要做的事情 - 使用文件名(例如使用 CF_HDROP 格式)和以 CF_PREFERREDDROPEFFECT 格式存储的 DROPEFFECT_COPY 值创建正确的 IDataObject。为什么要手动复制文件?

标签: c# listview explorer


【解决方案1】:

我找到了this 网页,它向您展示了如何获取资源管理器或 Internet Explorer 窗口的路径。这不会为您提供您已将文件拖放到的特定目录的路径,但它会为您提供一个或多个目录,您可以检查文件是否存在。
当您在其中找到文件所在的 Windows 资源管理器的打开实例时,您就得到了它被拖放到的目录。

另一种方法是尝试连接到复制过程并从那里获取 TargetPath。我怀疑这需要您编写一个文件系统过滤器驱动程序,这需要大量工作。

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 2011-06-19
    相关资源
    最近更新 更多