如何屏蔽键盘上的windows徽标键

解决方案 »

  1.   

    自己到论坛里搜索一下
    http://community.csdn.net/Expert/topic/3878/3878320.xml?temp=.6503565
      

  2.   

    转载一下,呵呵。很详细啰。
    ---------------------------------------------
    WINDOWS NT/2000 下如何屏蔽 CTRL+ALT+DEL作者 :ac952_z_cn前言 在 WINDOWS 9X 环境中我们可以使用 SystemParametersInfo (SPI_SCREENSAVERRUNNING, 1,NULL, 0); 来屏蔽 CTRL+ALT+DEL,但在 NT/2000 环境下却行不通 ,即使使用 WH_KEYBOARD_LL 这个低级的键盘 hook 也无法拦截!笔者通过替换 GINA DLL 的方式很好地实现了在 NT/2000 下屏蔽 CTRL+ALT+DEL 的功能。 下载源代码  6K一、原理 在 NT/2000 中交互式的登陆支持是由 WinLogon 调用 GINA DLL 实现的 ,GINA DLL 提供了一个交互式的界面为用户登陆提供认证请求。在 WinLogon 初始化时 ,就向系统注册截获 CTRL+ALT+DEL 消息 ,所以其他程序就无法得到 CTRL+ALT+DEL 的消息。 WinLogon 会和 GINA DLL 进行交互 ,缺省是 MSGINA.DLL( 在 System32 目录下 ) 。微软同时也为我们提供的接口 ,自己 可以编 GINA DLL 来代替 MSGINA.DLL 。 WinLogon 初始化时会创建 3 个桌面 :(1) 、 winlogon 桌面 : 主要显示 window  安全等界面 ,如你按下 CTRL+ALT+DEL,登陆的界面等 (2) 、应用程序桌面 : 我们平时见到的那个有我的电脑的界面 (3) 、屏幕保护桌面 : 屏幕保护显示界面。 在用户登陆以后 ,按下 CTRL+ALT+DEL 键的时候 ,WinLogon 回调用 GINA DLL 的输出函数 :WlxLoggedOnSAS,这时正处于 winlogon 桌面 ,我们只要直接将他转向应用程序桌面 ,系统就不会显示 Windows 安全那个界面 ,换一种说法 也就是用户按下 CTRL+ALT+DEL 后 ,不会起什么作用。当是我们在切换桌面的时候会出现屏幕闪动! 二、程序实现 GINA DLL 要输出下列函数 (winlogon 会调用 )WlxActivateUserShellWlxDisplayLockedNoticeWlxDisplaySASNoticeWlxDisplayStatusMessageWlxGetStatusMessageWlxInitializeWlxIsLockOkWlxIsLogoffOkWlxLoggedOnSASWlxLoggedOutSASWlxLogoffWlxNegotiateWlxNetworkProviderLoadWlxRemoveStatusMessageWlxScreenSaverNotifyWlxShutdownWlxStartApplicationWlxWkstaLockedSAS为了简化编程 ,我们从 MSGINA.DLL 中动态获取上诉函数 ,在自定义的 DLL 中 ( 以下称为 NoReboot.DLL) 中直接调用 MSGINA.DLL的函数即可。现在我们要处理的就是 WlxLoggedOnSAS 函数 :int WINAPI WlxLoggedOnSAS (PVOID pWlxContext,DWORD dwSasType,PVOID pReserved){HANDLE hMutex;WriteInfo("WlxLoggedOnSAS \r\n"); // 用于记录信息 if (dwSasType == WLX_SAS_TYPE_CTRL_ALT_DEL){ // 屏蔽 CTRL_ALT_DEL,也可以根据特定条件来决定是否要屏蔽 // 我采用了 Mutex 来控制是否屏蔽 ,( 注意 : 要用 unicode)hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, L"_ac952_z_cn_CTRL_ALT_DEL");if (hMutex){CloseHandle(hMutex);WriteInfo("disble CTRL+ALT+DEL \r\n");return WLX_SAS_ACTION_NONE; // 将屏幕切换到应用程序桌面 ,屏蔽掉 CTRL+ALT+DEL}elseWriteInfo("not disble CTRL+ALT+DEL \r\n");}return prcWlxLoggedOnSAS ( // 这是我从 MSGINA.DLL 中获取的函数。 pWlxContext,dwSasType,pReserved);}我们要在自己的程序中调用 hMutex = CreateMutex(NULL, FALSE, "_ac952_z_cn_CTRL_ALT_DEL"); 就可屏蔽 CTRL+ALT+DEL 。 三、安装和注意事项 :在编写 GIAN DLL 中要注意 ,GINA DLL 使用的是 unicode 。 GINA DLL 的安装 :键名  : \HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon变量名  : GinaDLL变量类型  : [REG_SZ]内容  : " 你的 GINA DLL 的名称 "  如 :"NoReboot.DLL:将你的 GINA DLL(NoReboot.dll) 拷贝到系统目录下 (system32),重启机器 ,你的 GINA DLL(NoReboot.dll) 就会运行。 如果出现进不了你的系统 ,那你进入 DOS 后 ,将 msgina.dll 拷贝成你的 GINA DLL(NoReboot.dll) 就可进入了 ,或者进入 安全模式 ,删除掉那个键值。 
      

  3.   

    自己到
    search.csdn.net
    里输入
    “屏蔽 系统热键”问题就解决了
      

  4.   

    http://borland.mblogger.cn/aiirii/posts/7346.aspx