gpt4 book ai didi

c++ - 调用 SetWindowsHookEx 指向的方法

转载 作者:行者123 更新时间:2023-11-28 08:03:53 26 4
gpt4 key购买 nike

HHOOK WINAPI SetWindowsHookEx(
__in int idHook,
__in HOOKPROC lpfn,
__in HINSTANCE hMod,
__in DWORD dwThreadId
);

在此作为doc lpfn 是指向钩子(Hook)过程的指针。让 Hook 程序为:

keyboardProcessing(.....) {
}

如何调用这个钩子(Hook)程序?即使我调用这个 Hook 过程,我将如何接收击键?

请解释 SetWindowsHookEx 是如何工作的,它是如何调用实际的程序员定义的钩子(Hook)方法来处理键的?

最佳答案

SetWindowsHookEx函数用于为某些 Windows 事件注册自定义处理程序。来自 MSDN:

Installs an application-defined hook procedure into a hook chain. You would install a hook procedure to monitor the system for certain types of events. These events are associated either with a specific thread or with all threads in the same desktop as the calling thread.

这意味着,对于选定的 Hook 类型(例如键盘事件),Windows 将调用提供的过程 (lpfn) 以通知该类型的事件发生。例如,您可以使用它从键盘获取所有事件,即使它们未定向到您的应用程序窗口(想象一下编写宏记录器)。

How do i call this hook procedure?

您不必调用该过程,您将在调用 SetWindowsHookEx 时提供它的地址,然后 Windows 会在需要时为您调用它。

Even if i call this hook procedure how am i going to receive the keystrokes?

如前所述,您不必调用它,如果您为 WH_KEYBOARD 注册一个 Hook ,那么 Windows 将为每个键盘事件调用该过程。不要忘记调用CallNextHookEx在你的程序中,钩子(Hook)是一个程序链,每个程序负责调用链中的下一个程序。在使用 UnhookWindowsHookEx 退出应用程序之前,最后释放钩子(Hook).

关于c++ - 调用 SetWindowsHookEx 指向的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10718287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com