如果一个应用程序(例如我的应用程序或外部进程)调用了SetWindowsHookEx,那么我能否取消挂钩?请记住,不是我首先创建的挂钩,因此我没有任何原始挂钩的变量或指针。
我认为你不能这样做。你需要使用 SetWindowsHookEx() 注册钩子的句柄,以便你可以使用 UnhookWindowsHookEx() 取消注册它。
顺便说一下,如果你在任何其他钩子被注册之前(即在应用程序启动期间)能够创建自己的钩子,那么你可以在该钩子中选择不调用 CallNextHookEx(),从而防止调用后续的钩子。可能值得一试。我怀疑这可能并不适用于所有类型的钩子。
实际上,我认为我发现了是的,这是可能的。挂钩CallNextHook将给您挂钩的挂钩ID,您可以使用它来取消挂钩。