我可以获得 destination/target 的 DoDragDrop 调用吗?

Can I get a destination/target of a DoDragDrop call?

我有一个 WPF 应用程序。我想允许用户将 "files"(或他们的视觉表示)从我的 WPF windows 拖放到真正的 Windows 资源管理器中。

这是我通过使用来自 Ole32.dll

的原生 DoDragDrop 设法做到的
[DllImport("ole32.dll", CharSet = CharSet.Auto, ExactSpelling = true, PreserveSig = false)]
public static extern void DoDragDrop(System.Runtime.InteropServices.ComTypes.IDataObject dataObject IDropSource dropSource, int allowedEffects, int[] finalEffect);

效果很好。

我不想复制文件,而是只想获取目的地。即,如果用户将文件拖到在 C:\Folder 上打开的资源管理器中 - 我想获取 C:\Folder... 或者至少获取发生放置事件的对象(在我的应用程序之外),并且希望我可以从该对象获取路径。

除非您同时创建了目标应用程序和目标应用程序,否则您无法 获取有关目标应用程序或目标应用程序的信息。此信息是设计抽象的并且是有限的

警告 :除非您编写某种钩子或 Dll 注入 方法 hook在拖放事件上并监视它们