【发布时间】:2012-08-17 18:52:54
【问题描述】:
我编写了一个 c# 应用程序,其中包含一个 WinAPI 低级键盘钩子,我用它来阻止除字母数字键之外的所有键。
问题是 - 其他程序(在登录时启动的程序)也有键盘挂钩(用于启动计算器、浏览器等应用程序)。这些程序在到达我的钩子回调之前已经打开了这些应用程序,因此,我无法停止操作。
有什么方法可以确保我的钩子在其他任何人之前被调用?
编辑
为了消除混淆 - 我的应用程序是一个没有安装程序的单个可执行文件。它是按需运行的。
我需要能够接管其他钩子 - 或者只是强制首先调用我的钩子回调 - 即使其他人已经调用了 SetWindowsHookEx 方法。
【问题讨论】:
-
只是好奇,你为什么需要这个?
-
@HassanBoutougha:你为什么说间谍?我的帖子明确指出我正在防止击键。
-
@L.B:我编写了一个应用程序,它允许我的小儿子在键盘上打字而不会造成任何问题。除了他一直打开我的浏览器和计算器。
-
你可能还会想到DeepFreeze这样的应用程序
-
@RomanR。这不适用于低级挂钩。其他全局钩子需要它,因为它们需要将 dll 注入目标进程。底层钩子在原始进程中运行。
标签: c# .net winapi keyboard-hook