屏蔽掉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) && ((pkbhs->flags & LLKHF_ALTDOWN) != 0))
return 1;

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

被折叠的 条评论
为什么被折叠?



