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

 更新时间:2024-10-12

  ⑴TaskKeyMgr

  ⑵////////////////////////////////////////

  ⑶// TaskKeyMgr.h

  ⑷#pragma once

  ⑸#include "TaskKeyHook.h"

  ⑹/////////////////////////////////////////////////////////////////////

  ⑺// 使用这个类禁用任务键,任务管理器或任务栏。

  ⑻// 用相应的标志调用Disable,如:CTaskMgrKeys::Disable(CTaskMgrKeys::ALL);

  ⑼class CTaskKeyMgr {

  ⑽TASKMGR = x, // 禁用任务管理器(Ctrl+Alt+Del)

  ⑾TASKKEYS = x, //禁用任务转换键(Alt-TAB, etc)

  ⑿TASKBAR = x, //禁用任务栏

  ⒀ALL=xFFFF //禁用所有东西L

  ⒁static void Disable(DWORD dwItem,BOOL bDisable,BOOL bBeep=FALSE);

  ⒂static BOOL IsTaskMgrDisabled();

  ⒃static BOOL IsTaskBarDisabled();

  ⒄static BOOL AreTaskKeysDisabled() {

  ⒅return ::AreTaskKeysDisabled(); // 调用 DLL

  ⒆////////////////////////////////////////////////////////////////

  ⒇// TaskKeyMgr.cpp

  ⒈#include "StdAfx.h"

  ⒉#include "TaskKeyMgr.h"

  ⒊#define HKCU HKEY_CURRENT_USER

  ⒋// 用于禁用任务管理器策略的注册表键值对

  ⒌LPCTSTR KEY_DisableTaskMgr =

  ⒍"Software\Microsoft\Windows\CurrentVersion\Policies\System";

  ⒎LPCTSTR VAL_DisableTaskMgr = "DisableTaskMgr";

  ⒏///////////////////////////////////////////

  ⒐// 禁用相关的任务键

  ⒑// 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_SUESS)

  ⒙RegCreateKey(HKCU, KEY_DisableTaskMgr, &hk);

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

  ⒛DWORD val=;

  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); // 安装键盘钩

您可能感兴趣的文章:

相关文章