在 Windows 上,我想要一个名为 Automatic Folder 的文件夹。当我在其中拖放某些内容时,文件夹会自行重命名 Folder 1 并创建一个新的空 Automatic Folder。最后有两个文件夹:
为了实现这个目标,我在 C++ DLL 中实现了
IShellExtInit
和 IContextMenu
接口,并且我编辑了我的注册表以通知 shell 在有人将某些东西拖放到文件夹中时调用我的 DLL。
当我的 DLL 被调用时,我重命名文件夹并创建一个新文件夹。它可以工作,但是(正如 Windows 文档指出的那样)这发生在 shell 完成删除操作之前。当外壳完成放置时,它将拖放的文件放入Automatic Folder,而我希望外壳将它们放入Folder 1。 (我希望 shell 通过重命名时不会更改的 ID 来识别文件夹)
我的问题:有没有办法将文件放入Folder 1?通过:
SHFileOperationW
和 CreateDirectoryW
调用,我稍后重命名和创建文件夹。我试过:
FOF_WANTMAPPINGHANDLE
标志并在HANDLETOMAPPINGS
调用期间给出SHFileOperationW
,希望shell会做一些映射。SHChangeNotify
,通知文件夹已重命名。IDropTarget
界面,(希望它会打开新的门)但似乎只有当您拖放到文件而不是文件夹上时才有可能。祝你有美好的一天:)