gpt4 book ai didi

winapi - 使用 Windows Hook 禁用按键

转载 作者:行者123 更新时间:2023-12-02 08:54:04 25 4
gpt4 key购买 nike

我正在尝试使用低级键盘 Hook 完全禁用键盘上的字母“a”。问题是,当我从keyboardproc返回0时,该键未被禁用,但当我返回1时,它被禁用。我认为从 Keyboardproc 返回而不调用CallNextHookEx 阻止消息。返回0和返回1有什么区别吗

LRESULT CALLBACK LowLevelKeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT* details = (KBDLLHOOKSTRUCT*) lParam;

if(code == HC_ACTION && wParam == WM_KEYDOWN)
{
if(details->vkCode == 0x41)
{
return 1;
}
}

return CallNextHookEx(g_hhkKeyboard, code, wParam, lParam);
}

最佳答案

来自LowLevelKeyboardProc MSDN documentation :

If the hook procedure processed the message, it may return a nonzero value to prevent the system from passing the message to the rest of the hook chain or the target window procedure.

[强调我的]

因此,如果您实际上返回 0 会发生什么,则没有完全详细的记录。我猜这个值会导致系统无论如何调用链中的下一个钩子(Hook)过程,并且它最终会由默认窗口过程处理。

我最近编写了一个简单的应用程序,要求您按住 Caps Lock 键指定的时间才能切换它,每当我在 LowLevelKeyboardProc 中实际处理此键时,我总是返回1、否则

CallNextHookEx( NULL, nCode, wParam, lParam );

附加说明:如果您的目标是 NT/XP/2003 及更新的系统,则可以在第一个 CallNextHookEx 参数中传递 NULL,因为它会被忽略.

关于winapi - 使用 Windows Hook 禁用按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/828134/

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