屏蔽组合键

通过设置低级键盘钩子函数LowLevelKeyboardProc,可以在Windows系统中屏蔽Ctrl+Esc、Alt+Esc、Alt+Tab及Num Lock等特定键盘组合键。在实现过程中,当检测到这些组合键按下时,钩子函数会返回TRUE阻止其默认行为。然而,有报告指出某些应用程序如HyperSnap的快捷键在屏蔽功能下仍可正常使用,尤其是在Release版本中可能会遇到问题,需要进一步调试和优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

屏蔽掉Ctrl+Esc、Alt+Esc、Alt+Tab、Num Lock等键,其实就是安装个钩子函数LowLevelKeyBoardProc,然后当键盘有以上按键发生时返回TRUE就行了...

偶发现截图工具HyperSnap在用快捷键 Ctrl+shift+R截图时此程序屏蔽不了。

// 禁止切换任务.cpp
//
#define _WIN32_WINNT  0x0400  // 当前操作系统版本为NT 4.0
#include           //KBDLLHOOKSTRUCT结构体需要

HHOOK hhk;
// SetWindowsHookEx 调用的回掉函数
LRESULT CALLBACK LowLevelKeyBoardProc (int nCode, WPARAM wParam, LPARAM lParam)
{
 KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
 BOOL bControlKeyDown = FALSE;
 switch (nCode)
 {
 case HC_ACTION:
   // 检查Ctrl键是否按下
   bControlKeyDown =
    ::GetAsyncKeyState (VK_CONTROL) >> ((sizeof (SHORT) * 8) - 1);
   // 禁止Ctrl + Esc
   if (pkbhs->vkCode == VK_ESCAPE && bControlKeyDown)
    return 1;
   // 禁止Alt + Tab
   if ((pkbhs->vkCode == VK_TAB) && ((pkbhs->flags & LLKHF_ALTDOWN) != 0))
    return 1;
   // 禁止Alt + Esc
   if ((pkbhs->vkCode == 0x1B)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值