gpt4 book ai didi

c++ - 键盘 Hook alt-tab 导致奇怪的行为?

转载 作者:行者123 更新时间:2023-11-28 08:09:25 24 4
gpt4 key购买 nike

我想禁止我的应用程序的用户使用 alt-tab。我试图通过使用低级键盘钩子(Hook)来解决这个问题。

设置完美,当我按下组合键等时会触发回调过程。发生的奇怪事情是我可以 alt-tab 退出应用程序,但随后 alt-tabbing 被完全禁用。我用鼠标切换应用程序并尝试按 alt-tab 键,但没有任何反应。我再次切换回我的应用程序和 alt-tab,它切换了应用程序,但只有一步。当离开我的应用程序时,alt-tab 不再起作用。

我尝试了不同的场景,首先我认为它与 VS2010 中的调试器有关,但不是,在没有调试器的情况下运行它会得到相同的结果。

我是否完全误解了这个钩子(Hook)程序,它是否意味着只捕获应用程序未聚焦时发生的事情?

osman.hpp :

static HHOOK m_hhook;

static LRESULT CALLBACK lowLevelKeyboardProc( int key, WPARAM wParam, LPARAM lParam );

osman.cpp:

HHOOK OSMan::m_hhook;

/*
* pseudo init code
*/
void OSMan::init()
{
m_hHook = SetWindowsHookEx( WH_KEYBOARD_LL, (HOOKPROC)lowLevelKeyboardProc, 0, 0 );
}

LRESULT CALLBACK OSMan::lowLevelKeyboardProc( int key, WPARAM wParam, LPARAM lParam )
{
KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;

switch (key)
{
case HC_ACTION:
{
if (pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN)
return 1;

}

default:
break;
}
return CallNextHookEx( m_hHook, key, wParam, lParam);
}

编辑:

  • added code.

最佳答案

如果你想正确禁用alt+tab,你应该通过RegisterHotKey(0,0,MOD_ALT,VK_TAB);注册热键; 然后处理(好吧,更多的是忽略)它生成的消息,这使您可以在本地应用程序,而不用担心 Windows Hook 链,并允许您轻松地即时启用或禁用它。

虽然对于游戏来说,idTech 4 input handling code有大量的输入 gem 。

关于c++ - 键盘 Hook alt-tab 导致奇怪的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9496880/

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