WEB开发网
开发学院软件开发VC Windows XP系统中如何屏蔽Ctrl+Alt+Del、Alt+Tab以... 阅读

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); // 禁用任务栏

如图四是例子程序运行画面:

上一页  1 2 3 4 5 6  下一页

Tags:Windows XP

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接