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

上传人:每**** 文档编号:113447284 上传时间:2022-06-25 格式:PPTX 页数:190 大小:292.25KB
收藏 版权申诉 举报 下载
XP系统中如何屏蔽Ctrl+Esc键序列_第1页
第1页 / 共190页
XP系统中如何屏蔽Ctrl+Esc键序列_第2页
第2页 / 共190页
XP系统中如何屏蔽Ctrl+Esc键序列_第3页
第3页 / 共190页
资源描述:

《XP系统中如何屏蔽Ctrl+Esc键序列》由会员分享,可在线阅读,更多相关《XP系统中如何屏蔽Ctrl+Esc键序列(190页珍藏版)》请在装配图网上搜索。

1、对于用过Windows的人,几乎没有人不知道Ctrl+Alt+Del组合键,尤其是在使用经常死机的Windows9x时,使用它的频率更高,这12021/8/6一组合键是专门为了系统安全起见提供的紧急出口。VC知识库在线杂志第11期,ac952_z_cn在他的个人专栏中写过一篇关于这方面的文章:“W22021/8/6INDOWSNT/2000下如何屏蔽CTRL+ALT+DEL”。因此本文侧重于介绍在WindowsXP中如何实现屏蔽CTRL+ALT+DEL32021/8/6组合键,也就是任务管理器,任务切换组合键(Alt+Tab),任务栏和“开始”菜单(Ctrl+Esc,VK_LWIN,VK_RW

2、IN)。这个方42021/8/6法也能应用于Windows2000环境。在Windows9x/Me系统中,屏蔽Ctrl+Alt+Del和各种任务开关键的方法是通过下面的52021/8/6方法实现的:BOOLbOldState;SystemParametersInfo(SPI_SETSCREENSAVERRUNNING62021/8/6,TRUE,&bOldState,0);MS大佬认为这种方法很业余,所以在WindowsNT/2000/XP中对此进行了修改。在这些较新72021/8/6的Windows版本中用户登陆使用Winlogon和GINAGraphicalIdentificationan

3、dAuthenticati82021/8/6on,意思是图形化的身份认证,挺吓唬人的是不是!其实就那么回事。Winlogon是Windows系统的一部分,它专门提供交互式登陆支持,而G92021/8/6INA则是Winlogon用来实现认证的一个DLL这个DLL就是msgina.dll。WlxInitialize、WlxActivate102021/8/6UserShell便是其中输出,当然不知这两个,还有别的。前者进行自身的初始化,后者激活用户的外壳程序。Windows就是用这个DLL来实现112021/8/6用户名+口令的身份认证的,但是开发人员可以用自己的GINA代替msgina.dll

4、。例如,实现智能卡、视网膜扫描仪、DNA检查等等认证机制来122021/8/6代替输入用户名+口令形式的身份检查。下面的表格中列出了与GINA有关的全部函数。其中有一个是WlxLoggedOnSAS,当按下Ctrl+A132021/8/6lt+Del键时,Winlogon便调用这个函数。(表一)GINA函数一览表函数描述WlxActivateUserShell激活用户142021/8/6外壳程序WlxDisplayLockedNotice允许GINADLL显示锁定信息WlxDisplaySASNotice当没有用户登152021/8/6陆时,Winlogon调用此函数WlxDisplaySta

5、tusMessageWinlogon用一个状态信息调用此函数进行显示Wlx162021/8/6GetConsoleSwitchCredentialsWinlogon调用此函数读取当前登陆用户的信任信息,并透明地将它们传到目标会话W172021/8/6lxGetStatusMessageWinlogon调用此函数获取当前状态信息WlxInitialize针对指定的窗口位置进行GINAD182021/8/6LL初始化WlxIsLockOk验证工作站正常锁定WlxIslogoffOk验证注销正常WlxLoggedonSAS用户已登陆并192021/8/6且工作站没有被加锁,如果此时接收到SAS事件,

6、则Winlogon调用此函数WlxLoggedOutSAS没有用户登陆,如果此时收到SAS202021/8/6事件,则Winlogon调用此函数WlxLogoff请求注销操作时通知GINADLLWlxNegotiate表示当前的Winlogo212021/8/6n版本是否能使用GINADLLWlxNetworkProviderLoad在加载网络服务提供程序收集了身份和认证信息后,Winlogon222021/8/6调用此函数WlxRemoveStatusMessageWinlogon调用此函数告诉GINADLL停止显示状态信息WlxScreen232021/8/6saverNotify允许GI

7、NA与屏幕保护操作交互WlxShutdown在关闭之前Winlogon调用此函数,允许GINA实现任何关闭242021/8/6任务,例如从读卡器中退出智能卡WlxStartApplication当系统需要在用户的上下文中启动应用程序时调用此函数WlxWkst252021/8/6aLockedSAS当工作站被锁定,如果接收到一个SAS,则Winlogon调用此函数在默认情况下,GINA显示登陆对话框,用户输入用户262021/8/6名及口令。所以要想屏蔽掉Ctrl+Alt+Del,则可以写一个新的MyGina.dll,其中提供接口调用msgina.dll的函数WlxLo272021/8/6gge

8、dOnSAS,从而实现Ctrl+Alt+Del屏蔽。或者编写一个键盘驱动程序来实现。难道屏蔽Ctrl+Alt+Del真的象上述所说282021/8/6的那么麻烦吗?有没有更好的方法呢?答案是肯定的。所以忘掉GINA吧,使用操作系统的策略设置完全可以搞掂这个问题。方法是进入开始菜单,选择292021/8/6运行,然后在运行对话框中输入gpedit.msc,启动Windows系统的组策略编辑器。在左边窗格查看用户配置|管理模板|系统|登302021/8/6录/注销,则在右边窗格策略里不难发现禁用任务管理器一项。组策略编辑器通过对这个策略的设置可以屏蔽掉Ctrl+Alt+Del。如312021/8/

9、6果要通过编写代码来实现,则必须操作下面的注册表项:HKCUSoftwareMicrosoftWindowsCurrent322021/8/6VersionPoliciesSystemDisableTaskMgr=dword:1如此设置之后,则在WindowsXP中,如332021/8/6果用户按下Ctrl+Alt+Del,则会弹出一个出错对话框,注意这里假设在控制面板中“用户帐号”管理的“选择登录和注销选项”设置启用了“342021/8/6使用欢迎屏幕”一项。否则,XP将使用Windows的传统登录模式,要求用户输入帐户名。并且Ctrl+Alt+Del组合键的行为也和传统的352021/8/

10、6行为一样,注册表中DisableTaskMgr的设置也只是将登录/注销对话框中的任务管理器按钮屏蔽或置灰。有人可能会问,有关任务管理器的文档362021/8/6又没有明确说明,那你是怎么知道DisableTaskMgr是用来禁用任务管理器的呢?告诉你吧,我是在使用GPEDIT时发现的。GPEDIT是372021/8/6一个非常有用的工具,不仅可以用它来编辑策略,还可以用它来发现策略。利用这个工具可以轻松控制Windows的许多东西,从许可权限的存取到是否使382021/8/6用IE的传统外观,从是否显示对话框中的PlacesBar到是否用Ctrl+Alt+Del启动任务管理器。总之用它可以配

11、置上百个界面行为,因此392021/8/6它是一个足以让系统管理员垂延三尺的工具。一旦找到了感兴趣的策略,那如何知道相应的注册表位置呢?有两种方法。第一种是比较粗鲁的办法:在修改策略402021/8/6的前后将注册表输出到一个.reg文件,然后比较它们有什么不同。所有的策略无外乎以下的四个注册表键:/用户指定HKEY_CURREN412021/8/6T_USERSoftwarePoliciesHKEY_CURRENT_USERSoftwareMicrosoftWindowsCurre422021/8/6ntVersionPolicies/机器指定HKEY_LOCAL_MACHINESoftwa

12、rePoliciesHKEY_LO432021/8/6CAL_MACHINESoftwareMicrosoftWindowsCurrentVersionPolicies第二种方法是直捣信息源442021/8/6头-检查描述策略的管理模板文件(.adm)。下面是WindowsXP的system.adm文件对DisableTaskMgr的描述:(Wi452021/8/6ndows2000对此的描述稍有不同,其细节请参考Windows2000的资源开发包)CATEGORY!CADOptions#if462021/8/6version=4EXPLAIN!CADOptions_Help#endifKEY

13、NAMESoftwareMicrosof472021/8/6tWindowsCurrentVersionPoliciesSystemPOLICY!DisableTaskMgr#ifvers482021/8/6ion=4SUPPORTED!SUPPORTED_Win2k#endifEXPLAIN!DisableTaskMgr_He492021/8/6lpVALUENAMEDisableTaskMgrENDPOLICY;MoreCtrl+Alt+Delpolicies502021/8/6here.;ENDCATEGORY;Ctrl+Alt+DeloptionsDisableTaskMgr_He51

14、2021/8/6lp=防止用户启动任务管理器(Taskmgr.exe)。nn如果该设置被启用,并且用户试图启动任务管理器,系统会显示消息,解释522021/8/6是一个策略禁止了这个操作。nn任务管理器让用户启动或终止程序,监视计算机性能,查看及监视计算机上所有运行中的程序(包含系统服务),搜索程532021/8/6序的执行文件名,及更改程序运行的优先顺序。DisableTaskMgr=删除任务管理器以上是DisableTaskMgr的描述542021/8/6片断正是在这段描述中KEYNAME和VALUENAME指定了注册表的键值对。利用这种方法,你可以为自己的应用程序创建管理模板和策略,但编

15、552021/8/6辑和浏览.adm模板文件的编辑器必须支持Unicode字符。如Notepad或者WordPad等都可以。此外,使用管理模板文件,系统管理员可562021/8/6以用它为整个组织配置需要的策略由此可以看出,此文件在系统中的地位举足轻重!有关模板管理文件格式的详细信息请参考平台SDK。最后需要强调的572021/8/6是DisableTaskMgr只是禁用Ctrl+Alt+Del的功能。下面我们来讨论如何捕获它的按键序列。要想截获Ctrl+Alt+Del,582021/8/6有三种可选择的方法:1、编写一个GINA代理;此方法我们在以后的文章中介绍。实际上,ac952_z_cn

16、的个人专栏文章:“WINDOWS592021/8/6NT/2000下如何屏蔽CTRL+ALT+DEL”使用的就是这种方法。2、编写一个键盘驱动程序;本文例子程序使用的方法。3、用自己的602021/8/6程序代替任务管理器程序TaskMgr.exe。屏蔽Ctrl+Alt+Del解决方案的具体实现细节请参考本文的例子代码。下面让我们来解612021/8/6决屏蔽任务切换键序列的问题,这些键序列包括Alt+Tab、Ctrl+Esc、Alt+Esc、VK_LWIN/VK_RWIN以及任务栏。在很早622021/8/6以前的Window3.1年代,处理这个问题的方法是通过WM_SYSKEYDOWN实现

17、。到了Windows9x时期,本文前面提到过对这个问题的632021/8/6处理方法,使用SPI_SETSCREENSAVERRUNNING。但是进入WindowsNT4.0(SP3+),Windows2000以及W642021/8/6indowsXP时代,对这个问题的处理已经有所不同,必须写一个低级的键盘驱动钩子。不要怕,因为要实现这个钩子并不是很难。本文下面会介绍如何实652021/8/6现这个键盘钩子。一般来讲,系统级钩子必须是一个DLL。下面是本文提供的一个键盘钩子DLL的源代码片断(TaskKeyHook.dll):662021/8/6头文件/672021/8/6/TaskKeyHo

18、ok.h/#defineDLLimport_declspec(dllimport)DLLimport682021/8/6BOOLDisableTaskKeys(BOOLbEnable,BOOLbBeep);DLLimportBOOLAreTaskKeysD692021/8/6isabled();实现文件/702021/8/6/TaskKeyHook.cpp/#define_WIN32_WINNT00500/forKBDL712021/8/6LHOOKSTRUCT#include/MFCcoreandstandardcomponents#defineDLLEXPORT_722021/8/6_de

19、clspec(dllexport)/App(DLL)object/classC732021/8/6TaskKeyHookDll:publicCWinApppublic:CTaskKeyHookDll()CTaskKey742021/8/6HookDll()MyDll;/752021/8/6/下面的代码表示这一部分在此DLL所有实例之间共享/低级键盘钩子一定是系统级的钩子/#pragmadata_seg(762021/8/6.mydata)HHOOKg_hHookKbdLL=NULL;/钩子句柄BOOLg_bBeep=FALSE;/按下非法键时蜂鸣772021/8/6响铃#pragmadata_

20、seg()#pragmacomment(linker,/SECTION:.mydata,RWS)/782021/8/6告诉链接器:建立数据共享段/低级键盘钩子/截获任务转换键792021/8/6:不传递直接返回/LRESULTCALLBACKMyTaskKeyHookLL(intnCode,WPARAMwp,LPARAMl802021/8/6p)KBDLLHOOKSTRUCT*pkh=(KBDLLHOOKSTRUCT*)lp;if(nCode=HC_ACTION)812021/8/6BOOLbCtrlKeyDown=GetAsyncKeyState(VK_CONTROL)(sizeof(SHO

21、RT)*8)822021/8/6-1);if(pkh-vkCode=VK_ESCAPE&bCtrlKeyDown)|/Ctrl+Esc/Alt+TAB832021/8/6(pkh-vkCode=VK_TAB&pkh-flags&LLKHF_ALTDOWN)|/Alt+Esc(pkh-842021/8/6vkCode=VK_ESCAPE&pkh-flags&LLKHF_ALTDOWN)|(pkh-vkCode=VK_LWIN|852021/8/6|pkh-vkCode=VK_RWIN)/开始菜单if(g_bBeep&(wp=WM_SYSKEYDOWN|wp=WM862021/8/6_KEYDOW

22、N)MessageBeep(0);/蜂鸣return1;/不再往CallNextHookEx传递,直接返回872021/8/6returnCallNextHookEx(g_hHookKbdLL,nCode,wp,lp);/882021/8/6/是否屏蔽任务键序列也就是说键盘钩子是否安装?/注:这892021/8/6里假设没有其它钩子做同样的事情/DLLEXPORTBOOLAreTaskKeysDisabled()returng_hH902021/8/6ookKbdLL!=NULL;/912021/8/6/屏蔽任务键:安装低级键盘构/返回当前是否屏蔽标志(TRUE/FALSE)/DLLEXPOR

23、TBOOLDisableTas922021/8/6kKeys(BOOLbDisable,BOOLbBeep)if(bDisable)if(!g_hHookKbdLL)g932021/8/6_hHookKbdLL=SetWindowsHookEx(WH_KEYBOARD_LL,MyTaskKeyHookLL,MyDll.m_942021/8/6hInstance,0);elseif(g_hHookKbdLL!=NULL)UnhookWindowsHookEx(g_952021/8/6hHookKbdLL);g_hHookKbdLL=NULL;g_bBeep=bBeep;returnAreTask

24、Keys962021/8/6Disabled();TaskKeyHook输出两个函数:DisableTaskKeys和AreTaskKeysDisabled。972021/8/6前者安装WH_KEYBOARD_LL钩子;后者判断这个钩子是否安装。此键盘钩子的处理思路是截获Alt+Tab,Ctrl+Esc,Alt+Es982021/8/6c以及Windows键VK_LWIN/VK_RWIN,关于这两个键,稍候会有详细描述。当钩子碰到这些键时,它直接返回到调用者,而不是将处理传992021/8/6递给CallNextHookEx。LRESULTCALLBACKMyTaskKeyHookLL(.)i

25、f(/*任务键*)1002021/8/6return1;/立即返回returnCallNextHookEx(.);TaskKeyHook的大部分实现都很简单。1012021/8/6只有一个地方用到了一点小技巧:既使用#pragmadata_seg命名包含全程数据的数据段,并且用#pragmacomment(linker1022021/8/6.)告诉链接器让这个数据段为共享段。实现细节请参考源代码。本文附带的例子程序(TrapKeys.exe)汇集了上述几个有关屏蔽键盘按键序1032021/8/6列的功能,除此之外,它还有一个功能就是禁用任务栏。因为既然禁用了任务转换键,那么一般来说,也必然要禁

26、用任务栏,否则禁用任务转换键就没有意义了1042021/8/6。禁用任务栏的具体方法如下:HWNDhwnd=FindWindow(Shell_traywnd,NULL);/找到任务栏Ena1052021/8/6bleWindow(hwnd,FALSE);/禁用任务栏如图四是例子程序运行画面:图四TrapKeys程序运行画面以下是Tra1062021/8/6pKeys程序的实现代码:/Tr1072021/8/6apKeys.cpp/#includestdafx.h#includeresource.h#includeSta1082021/8/6tlink.h#includeTaskKeyMgr.h

27、/主对话框/cl1092021/8/6assCMyDialog:publicCDialogpublic:CMyDialog(CWnd*pParent=NULL):CDi1102021/8/6alog(IDD_MYDIALOG,pParent)protected:HICONm_hIcon;CStaticlinkm_1112021/8/6wndlink1;CStaticlinkm_wndlink2;CStaticlinkm_wndlink3;virtualBOOL1122021/8/6onInitDialog();/命令/UI的更新处理afx_msgvoidonDisableTaskMgr();a

28、fx_msg1132021/8/6voidonDisableTaskKeys();afx_msgvoidonDisableTaskbar();afx_msgvoido1142021/8/6nUpdateDisableTaskMgr(CCmdUI*pCmdUI);afx_msgvoidonUpdateDisableTaskK1152021/8/6eys(CCmdUI*pCmdUI);afx_msgvoidonUpdateDisableTaskbar(CCmdUI*pCmdUI);1162021/8/6afx_msgLRESULTonKickIdle(WPARAM,LPARAM);DECLARE_

29、MESSAGE_MAP();1172021/8/6/标准的MFC对话框应1182021/8/6用类代码。/classCMyApp:publicCWinApppublic:virtualBOOLInitInstanc1192021/8/6e()/初始化app:运行对话框CMyDialogdlg;m_pMainWnd=&dlg;dlg.DoModal();1202021/8/6returnFALSE;virtualintExitInstance()/为了按全起见,在退出程序的时候,将所有禁用的项1212021/8/6目复原CTaskKeyMgr:Disable(CTaskKeyMgr:ALL,FA

30、LSE);return0;theA1222021/8/6pp;BEGIN_MESSAGE_MAP(CMyDialog,CDialog)ON_COMMAND(IDC_DISABLE_TASK1232021/8/6KEYS,OnDisableTaskKeys)ON_COMMAND(IDC_DISABLE_TASKBAR,OnDisableTaskb1242021/8/6ar)ON_COMMAND(IDC_DISABLE_TASKMGR,OnDisableTaskMgr)ON_UPDATE_COMMA1252021/8/6ND_UI(IDC_DISABLE_TASKKEYS,OnUpdateDisa

31、bleTaskKeys)ON_UPDATE_COMMAND1262021/8/6_UI(IDC_DISABLE_TASKBAR,OnUpdateDisableTaskbar)ON_UPDATE_COMMAND_UI(1272021/8/6IDC_DISABLE_TASKMGR,OnUpdateDisableTaskMgr)ON_MESSAGE(WM_KICKIDLE,On1282021/8/6KickIdle)END_MESSAGE_MAP()/1292021/8/6/初始化对话框:子类化超链接柄加栽图标/BOOLCMyDialog:onInitDialog()C1302021/8/6Dial

32、og:onInitDialog();/初始化超链接m_wndlink1.SubclassDlgItem(IDC_EMAI1312021/8/6L,this);m_wndlink2.SubclassDlgItem(IDC_VCKbaseURL,this);m_wndlink31322021/8/6.SubclassDlgItem(IDC_VCKbaselink,this);/自己设置对话框图标。MFC不会为对话框应用程序设置它1332021/8/6m_hIcon=AfxGetApp()-LoadIcon(IDR_MAINframe);SetIcon(m_hIcon,TRUE);1342021/8

33、/6/打图标SetIcon(m_hIcon,FALSE);/小图标returnTRUE;/1352021/8/6/命令/UI更新处理:写这些东西应该很轻松。void1362021/8/6CMyDialog:onDisableTaskKeys()CTaskKeyMgr:Disable(CTaskKeyMgr:T1372021/8/6ASKKEYS,!CTaskKeyMgr:AreTaskKeysDisabled(),TRUE);/蜂鸣voidCMyDi1382021/8/6alog:onUpdateDisableTaskKeys(CCmdUI*pCmdUI)pCmdUI-SetCheck(CTa

34、s1392021/8/6kKeyMgr:AreTaskKeysDisabled();voidCMyDialog:onDisableTaskbar()1402021/8/6CTaskKeyMgr:Disable(CTaskKeyMgr:TASKBAR,!CTaskKeyMgr:IsTaskB1412021/8/6arDisabled();voidCMyDialog:onUpdateDisableTaskbar(CCmdUI*pCmdUI1422021/8/6)pCmdUI-SetCheck(CTaskKeyMgr:IsTaskBarDisabled();voidCMyD1432021/8/6ia

35、log:onDisableTaskMgr()CTaskKeyMgr:Disable(CTaskKeyMgr:TASKMG1442021/8/6R,!CTaskKeyMgr:IsTaskMgrDisabled();voidCMyDialog:onUpdateDis1452021/8/6ableTaskMgr(CCmdUI*pCmdUI)pCmdUI-SetCheck(CTaskKeyMgr:IsTaskMgr1462021/8/6Disabled();/1472021/8/6/要想让ON_UPDATE_COMMAND_UI正常工作,这是必需的。/LRESULTCMyDialog:onKic148

36、2021/8/6kIdle(WPARAMwp,LPARAMlCount)UpdateDialogControls(this,TRUE);ret1492021/8/6urn0;按上述方法尽管禁用了任务栏,但是还有一个机关没有处理,那就是按下Windows键仍然可以弹出“开始”菜单。显然在处理VK1502021/8/6_LWIN之前,任务栏不会检查是否被启用。一般来讲,如果某个窗口被屏蔽掉,那么它就不再会处理用户在这个窗口的输入这就是所谓的禁用(Dis1512021/8/6able)的含义。通常调用EnableWindow(FALSE)后自然就达到了这个目的。但是处理VK_LWIN/VK_RWIN

37、按键的代码决不1522021/8/6会去检查任务栏启用/禁用状态。对此,本文的处理办法仍然是利用键盘钩子。修改一下TaskKeyHook实现,增加对Windows键的捕获。这样1532021/8/6按下“开始”菜单键之后什么也不会发生。希望没有漏掉其它的按键。如果哪位读者发现漏掉了什么键,请和我联系,以便把它加到键盘钩子中去。为了简单起1542021/8/6见,我在类CTaskKeyMgr中封装了所有禁用的函数。下面是这个类的定义击实现文件:TaskKeyMgr/1552021/8/6/TaskKeyMgr.h/#pragmaonce#include1562021/8/6TaskKeyHook

38、.h/1572021/8/6/使用这个类禁用任务键,任务管理器或任务栏。/用相应的标志调用Disable,如:CTaskMg1582021/8/6rKeys:Disable(CTaskMgrKeys:ALL);/classCTaskKeyMgrpublic:en1592021/8/6umTASKMGR=001,/禁用任务管理器(Ctrl+Alt+Del)TASKKEYS=002,/禁用任务转换键(Alt-T1602021/8/6AB,etc)TASKBAR=004,/禁用任务栏ALL=0FFFF/禁用所有东西L;staticvoidDisabl1612021/8/6e(DWORDdwItem,

39、BOOLbDisable,BOOLbBeep=FALSE);staticBOOLIsTaskMgrDisab1622021/8/6led();staticBOOLIsTaskBarDisabled();staticBOOLAreTaskKeysDisabled(1632021/8/6)return:AreTaskKeysDisabled();/调用DLL;CPP实现/1642021/8/6/TaskKeyMgr.cpp1652021/8/6/#includeStdAfx.h#includeTaskKeyMgr.h#defineHKCUHKEY_CURRE1662021/8/6NT_USER/用

40、于禁用任务管理器策略的注册表键值对LPCTSTRKEY_DisableTaskMgr=SoftwareMi1672021/8/6crosoftWindowsCurrentVersionPoliciesSystem;LPCTSTRVAL_DisableTaskMg1682021/8/6r=DisableTaskMgr;/禁用1692021/8/6相关的任务键/dwFlags=表示禁用什么/bDisable=禁用为(TRUE),否则为启用(FALSE)/bBe1702021/8/6ep=按下非法键是否蜂鸣(指针对任务键)/voidCTaskKeyMgr:Disable(DWORDdwFlags,B

41、OOLbD1712021/8/6isable,BOOLbBeep)/任务管理器(Ctrl+Alt+Del)if(dwFlags&TASKMGR)HKE1722021/8/6Yhk;if(RegOpenKey(HKCU,KEY_DisableTaskMgr,&hk)!=ERROR_SUCCESS)RegC1732021/8/6reateKey(HKCU,KEY_DisableTaskMgr,&hk);if(bDisable)/禁用任务管理器(disable1742021/8/6TM):setpolicy=1DWORDval=1;RegSetValueEx(hk,VAL_DisableTaskMg

42、r,NULL1752021/8/6,REG_DWORD,(BYTE*)&val,sizeof(val);else/启用任务管理器(enableTM)Reg1762021/8/6Deletevalue(hk,VAL_DisableTaskMgr);/任务键(Alt-TABetc)if(dwFla1772021/8/6gs&TASKKEYS):DisableTaskKeys(bDisable,bBeep);/安装键盘钩/任务栏if(dwF1782021/8/6lags&TASKBAR)HWNDhwnd=FindWindow(Shell_traywnd,NULL);EnableWind1792021

43、/8/6ow(hwnd,!bDisable);BOOLCTaskKeyMgr:IsTaskBarDisabled()HW1802021/8/6NDhwnd=FindWindow(Shell_traywnd,NULL);returnIsWindow(hwnd)?!IsWind1812021/8/6owEnabled(hwnd):TRUE;BOOLCTaskKeyMgr:IsTaskMgrDisabled()HKE1822021/8/6Yhk;if(RegOpenKey(HKCU,KEY_DisableTaskMgr,&hk)!=ERROR_SUCCESS)retu1832021/8/6rnFAL

44、SE;/没有此键,不禁用DWORDval=0;DWORDlen=4;returnRegQueryValueEx(hk1842021/8/6,VAL_DisableTaskMgr,NULL,NULL,(BYTE*)&val,&len)=ERROR_SUCCESS&val=1852021/8/6=1;这个类中的函数都是静态的,实际上CTaskKeyMgr完全就是一个名字空间。你可以在自己的程序中随心所欲地使用它。例如,禁用1862021/8/6任务转换按键和任务栏,但是不禁用Ctrl+Alt+Del:CTaskKeyMgr:Disable(CTaskKeyMgr:TASKK1872021/8/6EYS|CTaskKeyMgr:TASKBAR,TRUE);此外,还有几个函数是用来检查当前禁用了哪些东西,甚至可以在用户按下禁用1882021/8/6键时发出蜂鸣声自己去享受Paul的源代码吧!1892021/8/6完!谢谢观赏,转载请注明出处!AG亚游 http:/

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!