我想知道,像 WinRAR 这样的文件管理器如何管理它以启用对其存档文件的拖放支持(当将文件拖放到 .rar 文件上时,它会打开,并且 WinRAR 可以选择将文件添加到存档中)。
编辑:经过一些评论,我想澄清我想做什么(见图片):
- 特定数据类型的文件接受 Drop 请求 (.rar)。
- 删除文件 (.txt) 会导致 Shell 调用传递删除的文件 (.txt) 的名称以及接受删除的文件的名称 (.rar).
- 注册到文件类型的应用程序被调用,两个文件名都在命令行中提供给它。
最佳答案
您需要实现一个Shell Drop Handler。
这是一个 COM 对象,它实现了 IPersistFile
和 IDropTarget
接口(interface)。 IPersistFile
会告诉您哪个文件被放置在上面。 IDropTarget
会给你一个 IDataObject
来告诉你哪些文件/数据被删除了。
文档在这里:
关于c++ - 某些相关文件类型(.zip、.rar、...)的文件删除机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34498204/