使用 C++ 将放置事件传递到文件夹

Pass Drop Event on to a Folder using C++

我有一个程序可以作为 OLE 拖放的放置目标。 (基于 http://www.catch22.net/tuts/ole-data-transfers

我的问题是是否可以在文件夹(如临时文件夹)上传递此放置事件。就像用户在 GUI(即放置目标)上放置一样,此放置目标将放置发送到资源管理器。

类似于将消息发送到文件夹 -

SendMessage((HWND) folder_hwnd, WM_OLEDROP, (WPARAM)pDataObject, 0);   //Pseudo-code

谢谢。

您可以使用以下步骤模拟拖放到文件夹中:

  1. 获取目标文件夹的 PIDL,例如使用 SHParseDisplayName
  2. 获得一个IShellFolder for the target folder e.g. using SHBindToObject
  3. 绑定到文件夹的 IDropTarget interface using IShellFolder::GetUIObjectOf

然后您可以使用 IDropTarget 界面的各种方法模拟放置到文件夹。