如何钩取全局粘贴事件?

5
我正在开发一款软件,需要知道何时发生粘贴事件(通过上下文菜单或ctrl+V),仅适用于文件/目录。或多或少地,像TeraCopy或Copy Handler一样处理它们。当你复制然后粘贴时,是TeraCopy处理粘贴的。
我大致知道如何捕获复制事件,只需设置ClipboardViewer并捕获所有全局复制事件(实际上称为:WM_DRAWCLIPBOARD)。您可以在此处了解更多信息: http://www.radsoftware.com.au/articles/clipboardmonitor.aspx 但是ClipBoardViewer无法提供捕获粘贴事件的能力。

他们只是检测到了按键ctrl+v,是这样吗? - mmiika
1个回答

1

通过“粘贴”进行状态更改的过程是针对个别应用程序的,因此没有什么神奇的方法可以发现访问剪贴板后应用程序的状态是否已更改。

您能做的最好的事情就是检测应用程序是否从剪贴板中检索了数据。同样,无法知道应用程序对这些数据做了什么。这就像知道有人打开了前门,但不知道他们去了哪里,如果去了的话。

如果您确实想尝试这样做,可以像挂钩GetClipboardData函数一样做一些事情。有关如何放置系统范围API挂钩的信息,请查看Micrsoft Detours中的示例-http://research.microsoft.com/sn/detours


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接