我可以获得DoDragDrop呼叫的目的地/目标吗?

时间:2018-02-08 10:24:31

标签: c# wpf oledragdrop

我有一个WPF应用程序。我想允许用户将“文件”(或其可视化表示)从我的WPF窗口拖放到真正的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 ...或者至少获取发生丢弃事件的对象(在我的应用程序之外),以及希望我能从那个对象那里得到路径。

1 个答案:

答案 0 :(得分:2)

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

警告:除非你在拖放事件的拖放上为 hook 编写某种钩子或 Dll注入方法并监视它们< / p>