如何在 C++ 中捕获粘贴事件

How to capture paste event in c++

我知道我可以捕获 copy 事件,方法是使用 SetClipboardViewer 将 windows 句柄添加到剪贴板查看器链,或者通过挂钩键盘。

但是当发生 粘贴 时似乎没有传播剪贴板消息(使用 ctrl+v,右键单击->粘贴或菜单编辑->粘贴。

有没有其他方法可以捕获粘贴事件?

没错,您无法通过查看剪贴板来检测粘贴。 复制到剪贴板是写入操作,您可以在剪贴板查看器中看到(尽管您无法将它们与剪切区分开来)。

从剪贴板粘贴是读取操作,因此您在剪贴板查看器中看不到它们,即使您看到了,如果没有实际粘贴,您也无法在 "paste special" 中区分粘贴和预览。

全局监控 WM_PASTE 可能会有所帮助。例如,使用记事本时,您应该可以同时使用 Ctrl+V 粘贴和上下文菜单粘贴来查看它。但某些应用程序不会使用此消息 - 他们没有义务这样做。