公告:系统家 - 最好的系统光盘下载网站! 首页网站地图系统家如何安装系统?设为首页加入收藏
当前位置: 主页 > 系统教程 > WindowsXP教程 > XP系统中如何屏蔽Ctrl+Esc键序列(5)
XP系统中如何屏蔽Ctrl+Esc键序列(5)

XP系统中如何屏蔽Ctrl+Esc键序列(5)

时间:2011-08-22 17:31 作者:系统家点击:
  

  //

  // dwFlags = 表示禁用什么

  // bDisable = 禁用为 (TRUE) ,否则为启用 (FALSE)

  // bBeep = 按下非法键是否蜂鸣(指针对任务键)

  //

  void CTaskKeyMgr::Disable(DWORD dwFlags, BOOL bDisable, BOOL bBeep)

  {

  // 任务管理器 (Ctrl+Alt+Del)

  if (dwFlags & TASKMGR) {

  HKEY hk;

  if (RegOpenKey(HKCU, KEY_DisableTaskMgr,&hk)!=ERROR_SUCCESS)

  RegCreateKey(HKCU, KEY_DisableTaskMgr, &hk);

  if (bDisable) { // 禁用任务管理器(disable TM): set policy = 1

  DWORD val=1;

  RegSetValueEx(hk, VAL_DisableTaskMgr, NULL,

  REG_DWORD, (BYTE*)&val, sizeof(val));

  } else { // 启用任务管理器(enable TM)

  RegDeleteValue(hk,VAL_DisableTaskMgr);

  }

  }

  // 任务键 (Alt-TAB etc)

  if (dwFlags & TASKKEYS)

  ::DisableTaskKeys(bDisable,bBeep); // 安装键盘钩

 

  // 任务栏

  if (dwFlags & TASKBAR) {

  HWND hwnd = FindWindow("Shell_traywnd", NULL);

  EnableWindow(hwnd, !bDisable);

  }

  }

  BOOL CTaskKeyMgr::IsTaskBarDisabled()

  {

  HWND hwnd = FindWindow("Shell_traywnd", NULL);

  return IsWindow(hwnd) ? !IsWindowEnabled(hwnd) : TRUE;

  }

  BOOL CTaskKeyMgr::IsTaskMgrDisabled()

  {

  HKEY hk;

  if (RegOpenKey(HKCU, KEY_DisableTaskMgr, &hk)!=ERROR_SUCCESS)

  return FALSE; // 没有此键,不禁用

  DWORD val=0;

  DWORD len=4;

  return RegQueryValueEx(hk, VAL_DisableTaskMgr,

  NULL, NULL, (BYTE*)&val, &len)==ERROR_SUCCESS && val==1;

  }

  这个类中的函数都是静态的,实际上CTaskKeyMgr完全就是一个名字空间。你可以在自己的程序中随心所欲地使用它。例如,禁用任务转换按键和任务栏,但是不禁用Ctrl+Alt+Del:

  CTaskKeyMgr::Disable(CTaskKeyMgr::TASKKEYS |

  CTaskKeyMgr::TASKBAR, TRUE);

  此外,还有几个函数是用来检查当前禁用了哪些东西,甚至可以在用户按下禁用键时发出蜂鸣声……自己去享受Paul的源代码吧!


(责任编辑:系统家)
顶一下
(0)
0%
踩一下
(0)
0%
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
教程专题栏目
热门教程推荐
系统下载排行榜
扫一扫关注系统家微信公众号