Windows XP系统中如何屏蔽Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
2010-07-15 20:45:08 来源:WEB开发网核心提示:TaskKeyHook 输出两个函数:DisableTaskKeys 和 AreTaskKeysDisabled,前者安装WH_KEYBOARD_LL 钩子;后者判断这个钩子是否安装,Windows XP系统中如何屏蔽Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列(5),此键盘钩子的处理思路是截获A
TaskKeyHook 输出两个函数:DisableTaskKeys 和 AreTaskKeysDisabled。前者安装WH_KEYBOARD_LL 钩子;后者判断这个钩子是否安装。此键盘钩子的处理思路是截获Alt+Tab,Ctrl+Esc,Alt+Esc以及Windows 键VK_LWIN/VK_RWIN,关于这两个键,稍候会有详细描述。当钩子碰到这些键时,它直接返回到调用者,而不是将处理传递给CallNextHookEx 。
LRESULT CALLBACK MyTaskKeyHookLL(...)
{
if (/* 任务键*)
return 1; // 立即返回
return CallNextHookEx(...);
}
TaskKeyHook的大部分实现都很简单。只有一个地方用到了一点小技巧:既使用#pragma data_seg 命名包含全程数据的数据段,并且用#pragma comment (linker...)告诉链接器让这个数据段为共享段。实现细节请参考源代码。 本文附带的例子程序(TrapKeys.exe)汇集了上述几个有关屏蔽键盘按键序列的功能,除此之外,它还有一个功能就是禁用任务栏。因为既然禁用了任务转换键,那么一般来说,也必然要禁用任务栏,否则禁用任务转换键就没有意义了。禁用任务栏的具体方法如下:
HWND hwnd = FindWindow("Shell_traywnd", NULL);//找到任务栏
EnableWindow(hwnd, FALSE); // 禁用任务栏
如图四是例子程序运行画面:
更多精彩
赞助商链接