问题描述
有:
- 在具有大文件(下一个
Folder A
)的文件夹(下一个File
)中打开Windows资源管理器窗口。 - 我的应用程序窗口(下一个
App
)已注册为放置目标并实现了IDropTarget
。 - 用户将
App
与他系统上的另一个文件夹(下一个Folder B
)相关联。 - 用户希望通过
File
将Folder A
从Folder B
复制/移动到App
。 - 用户开始从
File
到Folder A
的{{1}}拖动操作。 - 当
App
收到App
时,它将获得DragEnter
中的IDropTarger
并呼叫Folder B
Folder B
。当DragEnter
收到App
,DragOver
,DragLeave
时,它将调用DragDrop
Folder B
,DragOver
,DragLeave
分别。 - 当
DragDrop
调用App
的{{1}}时,Windows资源管理器将启动DragDrop
的异步复制/移动操作(下一个Folder B
)。File
的用户界面未被阻止,用户可以关闭Operation
。
App
不管理App
中的App
,也不控制IDataObject
。如果用户在File
期间关闭Operation
,则App
将被中止。
我不要:
- 要通过
IDataObjectAsyncCapability::SetAsyncMode(False)
禁用Operation
异步。 - 要自己通过Shell Clipboard Formats来
Operation
(复制或移动文件),因为如果Operation
失败了,我不想处理所有可能的异常。让Windows资源管理器执行此操作。
我正在寻找一种获取有关Operation
结束的通知的方法。如果在Operation
进行期间用户关闭Operation
,则App
会警告用户。
我尝试了以下方法。用FORMATETC
收集IDataObject::EnumFormatEtc
,并为每个呼叫IDataObject::DAdvice
:
Operation
我每个App
都得到hr == OLE_E_ADVISENOTSUPPORTED
。我也尝试了FORMATETC{0,NULL,-1,-1}
,但结果相同。
如何接收操作结束的通知?或者如何将操作提交到Windows资源管理器进程?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)