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

标签 c++ winapi drag-and-drop ole

我有一个程序可以作为 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对于目标文件夹,例如使用 SHBindToObject
  3. 绑定(bind)到文件夹的 IDropTarget界面使用IShellFolder::GetUIObjectOf

然后,您可以使用 IDropTarget 接口(interface)的各种方法模拟放置到文件夹中。

关于c++ - 使用 C++ 将放置事件传递到文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28139791/

相关文章:

visual-studio-2008 - 启用从 Windows 资源管理器拖放到 Visual Studio 2008

c++ - boost ptree 即时修改值数组

c++ - 有什么理由不使用 dynamic_cast 的地址来引用?

无法在 Visual Studio 的 WinAPI IP 帮助程序中使用 IPv6 功能

php - 在 Windows 上设置 react/zmq

java - 我有一个关于动画拖放的问题

c++ - 如何防止功能被优化

c++ - 为什么 std::fstream 返回 void 而不是 bool

c++ - Windows 创建错误 - 可能是事件处理

swing - 斯卡拉 Swing : draggable/resizable component trait