如何将文件列表拖放到窗口上

如何将文件列表拖放到窗口上

我在 .txt 文件中有一个很长的 .png 类型文件列表。有什么方法可以将此列表拖放到正在运行的 Windows 程序中吗?我知道当我将文件从 Windows 资源管理器拖放到正在运行的窗口时,该程序会接受文件。(解释一下拖放的工作原理可能会有所帮助。)

答案1

Windows 程序在消息循环或消息泵中使用来自操作系统的“消息”。拖放在此级别上工作 - 应用程序接收“传入的拖放内容”消息 - 它与您单击按钮或调整窗口大小时发生的操作处于同一级别。

单个程序可以具有程序员创建的任何行为,并以任何想要的方式响应消息。因此,程序员必须在其程序中构建理解您拖到其上的文本并按照您描述的方式执行的能力。

COM 组件等可以加入以添加或修改这些行为(因此可以这样做),但据我所知,标准的开箱即用的 Windows 不会这样做,也不会提供任何使拖放行为像您描述的那样的实用程序。我不知道有哪个实用程序提供此功能。

有东西告诉我gvim或其他可编写脚本的文本编辑器可以做到这一点。

如果您的文件列表由换行符分隔,并且可以用空格替换这些换行符,则您可以考虑将其转换为以空格分隔的文件列表,并使用cmd.exe文件列表作为参数手动调用命令的可执行文件。

答案2

该应用程序需要有解析拖放文本的功能。

删除一个文件会给它一个特定的引用 - 它可以开始查看文件内部,看看它是否可以处理,然后适当地处理它。

删除文本时,它必须“知道”如何处理文本 - 一个完全不同的问题。
文本可能是文件引用,以 file:// 或 URL 开头,http:// ... 或者它可能只是一个名称 mypic.png。
它可以将前两个作为既定协议来处理,但它将如何处理 mypic.png?它不是 png 文件,只是一个名称。它不知道从哪里开始找到它应该在哪里;如果这样的文件存在于您的本地计算机或某个网站上。

相关内容