C#检测剪贴板粘贴WITH HOOK

时间:2017-07-09 13:06:07

标签: c# .net windows winapi hook

是否可以全局拦截Windows上的粘贴事件并根据目标进程进行阻塞,并使用可在C#WinForms中构建任何CPU构建的钩子?

我想过在GetClipboardData中放一个钩子或者等待WM_PASTE消息。

我的第一次尝试是SetWindowsHookEx,但另一种看起来让我气馁。

MSDN says:

  

.NET Framework不支持全局挂钩   除WH_KEYBOARD_LL低级别挂钩和WH_MOUSE_LL低级别挂钩外,您无法在Microsoft .NET Framework中实现全局挂钩。要安装全局钩子,钩子必须具有本机DLL导出,以将自身注入另一个需要有效,一致的函数调用的进程中。此行为需要DLL导出。 .NET Framework不支持DLL导出。托管代码没有函数指针的一致值的概念,因为这些函数指针是动态构建的代理。

1 个答案:

答案 0 :(得分:0)

没有理想的解决方案来检测粘贴事件。就像RbMm所说的那样,仅当剪贴板中的内容更改时,才会发送WM_CLIPBOARDUPDATE。 (复制或剪切)。 WM_DESTROYCLIPBOARD是在粘贴操作期间发送的,但前提是剪贴板中的内容是使用剪切操作添加的。

但是您可以通过实现文件系统过滤器驱动程序来实现。