关于windows:注册一个全局钩子来检测鼠标是否拖动文件/文本

Register a global hook to detect whether mouse dragging files/text

我知道可以为鼠标移动、按钮单击、滚动等注册全局挂钩,但我想知道是否有任何方法可以检测用户是否真的使用全局挂钩拖动文件或文本(或其他内容)。

在这上面似乎找不到任何东西。


它不是由Windows消息处理的,即使需要一个消息循环才能使其工作。经典的COM要求。从registerDragDrop()开始阅读以查看管道。

值得注意的是,UAC的uipi方面阻碍了D+D从非提升的进程到提升的进程。changeWindowsMessageFilter()是常见的解决方法,它不适用于d+d。不知道解决方法。


对不起,没有钩子。


您可能需要使用全局钩子将一个DLL注入到每个正在运行的进程中,然后该DLL可以手动重定向每个进程的导入表中的DoDragDrop()SHDoDragDrop()函数。当调用重定向函数时,您可以让DLL根据需要通知主应用程序。