在应用程序外部的有效放置目标上拖动时发生的事件

本文关键字:拖动 事件 外部 应用程序 有效 目标 | 更新日期: 2023-09-27 18:20:25

我有一个非常简单的方法,可以在本地写入文件,但我只想在用户看起来要退出应用程序时触发它,因为每次开始拖动时触发它会导致写入大量不必要的文件。

所以我的问题是:如果用户将应用程序内的东西拖到应用程序外,是否有可能检测到他们何时拖过有效的放置目标(例如桌面或windows资源管理器)?

编辑:在更一般的层面上,我的问题是:我如何应对在我的应用程序外部发生的鼠标/拖动事件?

在应用程序外部的有效放置目标上拖动时发生的事件

不完全确定你想要实现什么,但这可能会有所帮助:

WPF:将虚拟文件拖放到Windows资源管理器中

在大多数情况下,无论你要拖放到哪里,拖放事件都应该触发(我认为),但当执行拖放时,你肯定会收到通知。

正如@Quarzy所说,除非你与其他应用程序进行通信,否则可能没有直接的方法来测试底层windows拖放系统不会暴露的数据。

更具体地说,这个问题指向这篇文章:http://blogs.msdn.com/b/delay/archive/2009/11/04/creating-something-from-nothing-asynchronously-developer-friendly-virtual-file-implementation-for-net-improved.aspx

我发布这篇文章纯粹是因为我想知道它是否会导致其他事情,除此之外,你可能能够在光标下获得控件的Hwnd——可能http://social.msdn.microsoft.com/Forums/windows/en-US/3df9fc84-4020-4ae1-8b4f-942bce65568f/find-the-object-under-the-mouse?forum=winforms作为起点。

然后,可能还有一种方法可以通过互操作来查询该特定控件是否是有效的丢弃目标。

祝你好运!

这可能是您问题的答案:注册一个全局钩子来检测鼠标拖动文件/text

以下建议可能会有什么帮助(要求您创建c++外部库):

  1. 捕获其他可能的进程窗口消息(全局挂钩WH_GETMESSAGE)(请参阅此链接如何在没有DLL的情况下创建全局WH_GETMESSAGE挂钩)
  2. 侦听WM_DROPFILES

请参阅以下链接:http://www.experts-exchange.com/Programming/Languages/CPP/Q_10203575.html

这里还有一个有用的答案。我如何捕捉(WPF)窗口外发生的鼠标事件?

但我看不出有任何方法可以检测目标是否有效,只要你与潜在目标没有沟通。