0

我有一个 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... 或者至少获取发生放置事件的对象(在我的应用程序之外),并且希望我能从那个对象那里得到路径。

4

1 回答 1

2

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

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

于 2018-02-08T10:53:08.500 回答