玩暗黑破坏神2免alt3 G H alt ESC 失灵没有反应

我的上下左右键盘移动键失灵了,请问能窗口打开bios吗?_百度知道
我的上下左右键盘移动键失灵了,请问能窗口打开bios吗?
因为重装系统,需要进入bios设置U盘或CD启动。可是上下左右的移动按键失灵了。
我有更好的答案
操作系统(已经测试过了95,97,98,98se,2000,me等,还没有测试过DOS,win3.x和NT)。这种程序的运用可以在很大程度上上代替鼠标(除了那些需要在按住鼠标左键的同时还要移动鼠标的操作,如:对窗口的随意拖动,word文档中内容的连续选择和文件夹间的拖动等)。运用这类模拟程序,我们可以设置鼠标移动的(八个)方向键,逻辑左键,逻辑右键,左双击键,右双击键,以及鼠标滑动的速度等,这些一般设置在数字小键盘上(当然设置在大键盘上也未必不可,视个人的习惯而定。这些程序在国外非常的多,但是国内使用较多的是Virtual Mouse。
2)直接利用数字小键盘来模拟鼠标的多数功能,但是这项功能只在win98以上的版本中开放了,低于win98的系统(如97,95)就没有此功能。我们可以在&开始--&设置--&控...
。。。。。。。。。。。。。。。。。。。。。
其他类似问题
为您推荐:
您可能关注的推广
bios的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁为什么键盘方向键↑和Esc没用了,g,h,Alt也按了没反应,其他键都好好的
为什么键盘方向键↑和Esc没用了,g,h,Alt也按了没反应,其他键都好好的
补充:是win7的笔记本
补充:烦死了啊,这键盘
无语
正常情况下,其它按键能用然而就这几个用不了,只可能是这几个按键接触不良,最好将键盘倒过来拆开,保持按键不动,用干毛刷刷几下键盘电路板,重点擦拭有问题的那些按键。
另外,如果键盘按不了,检查键盘的指示灯是否正常亮起,如果未亮试着按下Num Lack键,如果仍未亮,再试试主机后面的键盘插口,是否稳当。这样的小问题尽量做到既实惠又有效!祝你成功朋友。
笔记本?&& 笔记本不好说& 你看看下面有没有异物&& 也可以拆下来用酒精清洗
那没办法 可能是键盘进水 导致下面短路 那几个键用不了
或者是键盘下面的胶皮坏了
那去售后吧
笔记本没有键盘断线的
嫌麻烦买个USB的
USB有笔记本一样的键盘
果断先去看看情况
嗯 先去拿售后看看
如果有保修 是给你免费换键盘的 如果没有了 你看看修多少钱 如果贵直接买个键盘吧
确实,卖主让我去售后点.修好后我也要买个键盘。
其他回答 (6)
坏了 建议重新买一个
键盘里面有线断了.我是网管.这样的键盘都是淘汰
可以外接USB键盘
确实如此 再去买一个键盘吧
把键盘按键换一个 最好去厂家或维修电脑的去修理
请问~您那是笔记本键盘还是台式机的键盘?
那你看看你的功能键是不是开着?
刚测试了下,F4-F6都没用,还有刚说的那几个
会不会是笔记本的小键盘开启了?
怎么关闭??
因为键盘坏了,换一个这是必须的,我以前是拆了之后就发觉越来越多的键不能用,不知道你有没有拆,换一个吧
啊,笔记本我不敢拆啊,送那边要过几天再去。
键盘拿去其他电脑试一试,如果其他电脑可以,就说明自己本身电脑设置问题
相关知识等待您来回答
电脑常识领域专家
& &SOGOU - 京ICP证050897号您的位置: >
苹果电脑MACbook Air快捷键大全
[导读]要使用快捷键或组合键,您可以同时按修饰键和字符键。例如,同时按下 Command 键(标有 符号的按键)和“c”键会将当前选中的任何内容(文本、图形等等)拷贝至夹纸板。这也称作 Command-C 组合键(或快捷键)。许多...
要使用快捷键或组合键,您可以同时按修饰键和字符键。例如,同时按下 Command 键(标有 符号的按键)和“c”键会将当前选中的任何内容(文本、图形等等)拷贝至夹纸板。这也称作 Command-C 组合键(或快捷键)。许多组合键中都包含修饰键。修饰键将改变 Mac OS X 对其他按键或鼠标点按动作的解释方式。修饰键包括 Command、Control、Option、Shift、Caps Lock 和 fn 键(如果您的键盘有 fn 键)。以下是出现在 Mac OS X 菜单中的修饰键符号:(Command 键)也叫苹果键,基本相当于pc的Ctrl键(Control 键)(Option 键)-“Alt”可能也出现在此键上(Shift 键)(Caps Lock 键)- 切换 Caps Lock 开或关fn(功能键)其他常用快捷键:* cmd+C:拷贝* cmd+V:粘贴* cmd+W:关闭窗口* cmd+Q:退出程序* cmd+I:显示文件/文件夹属性* cmd+Backspace:删除* cmd+shift+3:捕获整个屏幕* cmd+shift+4:捕获选择的区域* cmd+shift+4+space:捕获某个应用程序的窗口* cmd+F:在应用程序中搜索* cmd+Space:用Spotlight进行桌面搜索* fn+Backspace:相当于Windows里面的Delete键(笔记本键盘专用,台式机键盘有Delete键)* 开机时,听到启动音后,按住Option(相当于Windows的Alt)键,可以选择从Windows或者Mac启动。* 开机时,听到启动音后,按住“T”键,将使计算机进入目标磁盘状态,即通过USB连线,可以将苹果机当作USB硬盘使用。组合键功能Command-A选中最前面的 Finder 窗口中的所有项(如果未打开任何窗口则选中桌面内容)Option-Command-A取消选择所有项Shift-Command-A打开“应用程序”文件夹Command-C拷贝所选项/文本至夹纸板Shift-Command-C打开“电脑”窗口Command-D复制所选项Shift-Command-D打开桌面文件夹Command-E推出Command-F查找任何匹配 Spotlight 属性的内容Shift-Command-F查找 Spotlight 文件名匹配项Option-Command-F导航到已打开的 Spotlight 窗口中的搜索栏Shift-Command-G前往文件夹Shift-Command-H打开当前所登录用户帐户的个人文件夹Command-I显示简介Option-Command-I显示检查器Control-Command-I获得摘要信息Shift-Command-I打开 iDiskCommand-J调出“显示”选项Command-K连接服务器Shift-Command-K打开“网络”窗口Command-L为所选项制作替身Command-M最小化窗口Option-Command-M最小化所有窗口Command-N新建 Finder 窗口Shift-Command-N新建文件夹Option-Command-N新建智能文件夹Command-O打开所选项Shift-Command-Q注销Option-Shift-Command-Q立即注销Command-R显示(替身的)原身Command-T添加到工具条Shift-Command-T添加到个人收藏Option-Command-T在 Finder 窗口中隐藏工具栏/显示工具栏Shift-Command-U打开“实用工具”文件夹Command-V粘贴Command-W关闭窗口Option-Command-W关闭所有窗口Command-X剪切Option-Command-Y幻灯片显示(Mac OS X 10.5 或更高版本)Command-Z还原/重做Command-1以图标显示Command-2列表方式显示Command-3以分栏方式显示Command-4以 Cover Flow 方式显示(Mac OS X 10.5 或更高版本)Command-,(Command 加逗号键)打开 Finder 偏好设置Command-`(重音符键 - 美式英语键盘布局中 Tab 键的上方)循环显示打开的 Finder 窗口Command-Shift-?打开 Mac 帮助Option-Shift-Command-Esc(按住三秒钟)- 仅 Mac OS&X&v10.5、v10.6 或更高版本强制退出最前面的应用程序Command-[后退Command-]前进Command-上箭头打开所含文件夹Control-Command-上箭头在新窗口中打开所含文件夹Command-下箭头打开高亮显示的项Command-Tab切换应用程序 - 向前循环Shift-Command-Tab切换应用程序 - 向后循环Command-Delete移到废纸篓Shift-Command-Delete清倒废纸篓Option-Shift-Command-Delete清倒废纸篓(不显示确认对话框)空格键(或 Command-Y)快速查看(Mac OS X 10.5 或更高版本)拖移时按 Command 键将拖移的项移到其他宗卷/位置(按住按键时指针图标发生变化 - 请参阅此文章)拖移时按 Option 键拷贝拖移的项(按住按键时指针图标发生变化 - 请参阅此文章)拖移时按 Option-Command 组合键为拖移的项制作替身(按住按键时指针图标发生变化 - 请参阅此文章)&应用程序和其他Mac OS X键盘命令&注:有些应用程序可能不支持以下所有应用程序组合键。组合键功能Command-空格键显示或隐藏 Spotlight 搜索栏(如果安装了多语种,则可能循环显示启用的语系)Control-A移到行/段落的开头Control-B向后移动一个字符Control-D删除光标前的字符Control-E移到行/段落的结尾Control-F向前移动一个字符Control-H删除光标后的字符Control-K删除从光标前的字符到行/段落结尾的所有内容Control-L将光标/所选内容置于可见区域中央Control-N下移一行Control-O在光标后插入一行Control-P上移一行Control-T移调光标前后的字符Control-V下移一个页面Option-Command-空格键显示 Spotlight 搜索结果窗口(如果安装了多语种,则可能循环显示某一语系下的键盘布局和输入法)Command-Tab在打开的应用程序列表中,向下移动到下一个最近使用的应用程序Shift-Command-Tab在打开的应用程序列表中向上移动(按最近使用时间排序)Shift-Tab按反方向浏览各控件Control-Tab聚焦对话框中的下一组控件或聚焦下一个表格(当 Tab 移到下一个单元格时)Shift-Control-Tab聚焦上一组控件Command-esc打开 Front Row(如果已安装)Option-推出键从备选光盘驱动器中推出(如果已安装)Control-推出键显示关机对话框Option-Command-推出键使电脑进入睡眠模式Control-Command-推出键退出所有应用程序(会让您先存储对已打开文稿所作的更改),然后重新启动电脑Control Option-Command-推出键退出所有应用程序(会让您先存储对已打开文稿所作的更改),然后关闭电脑fn-Delete向前删除(适用于便携式 Mac 的内建键盘)Control-F1切换全键盘控制开或关Control-F2聚焦菜单栏Control-F3聚焦 DockControl-F4聚焦活跃窗口或下一个窗口Shift-Control-F4聚焦上一个活跃窗口Control-F5聚焦工具栏Control-F6聚焦第一个(或下一个)面板Shift-Control-F6聚焦上一个面板Control-F7临时覆盖窗口和对话框中的当前键盘控制模式F9拼贴或取消拼贴所有打开的窗口F10拼贴或取消拼贴当前活跃应用程序中所有打开的窗口F11隐藏或显示所有打开的窗口F12隐藏或显示 DashboardCommand-`激活最前面的应用程序中下一个打开的窗口Shift-Command-`激活最前面的应用程序中上一个打开的窗口Option-Command-`聚焦窗口抽屉Command- -(减号)缩小所选项Command-{使所选内容左对齐Command-}使所选内容右对齐Command-|使所选内容居中对齐Command-:显示“拼写”窗口Command-;查找文稿中拼写错误的词Command-,打开最前面的应用程序的偏好设置窗口(前提是应用程序支持此快捷键)Option-Control-Command-,降低屏幕对比度Option-Control-Command-.增强屏幕对比度Command-?在帮助显示程序中打开应用程序的帮助Option-Command-/打开或关闭字体平滑Shift-Command-=放大所选项Shift-Command-3将屏幕捕捉到文件Shift-Control-Command-3将屏幕捕捉到夹纸板Shift-Command-4将所选内容捕捉到文件Shift-Control-Command-4将所选内容捕捉到夹纸板Command-A高亮显示文稿或窗口中的所有项,或高亮显示文本栏中的所有字符Command-B以粗体显示所选文本或切换文本粗体显示开/关Command-C将所选数据拷贝到夹纸板Shift-Command-C显示“颜色”窗口Option-Command-C拷贝所选文本的样式Control-Command-C拷贝所选项的格式设置并存储到夹纸板Option-Command-D显示或隐藏 DockCommand-Control D在字典应用程序中显示所选词的定义Command-E使用所选内容进行查找Command-F打开“查找”窗口Option-Command-F移到搜索栏控件Command-G查找所选内容出现的下一个位置Shift-Command-G查找所选内容出现的上一个位置Command-H隐藏当前正在运行的应用程序窗口Option-Command-H隐藏所有其他正在运行的应用程序窗口Command-I以斜体显示所选文本或切换文本斜体显示开/关Option-Command-I显示检查器窗口Command-J滚动到所选部分Command-M将活跃窗口最小化至 DockOption-Command-M将活跃应用程序的所有窗口最小化至 DockCommand-N在最前面的应用程序中创建新文稿Command-O显示对话框,用于选择要在最前面的应用程序中打开的文稿Command-P显示“打印”对话框Shift-Command-P显示用于指定打印参数(页面设置)的对话框Command-Q退出最前面的应用程序Command-S存储活跃文稿Shift-Command-S显示“存储为”对话框Command-T显示“字体”窗口Option-Command-T显示或隐藏工具栏Command-U对所选文本加下划线或打开/关闭加下划线功能Command-V在插入点位置粘贴夹纸板内容Option-Command-V将某对象的样式应用于所选对象(粘贴样式)Option-Shift-Command-V将周围文本的样式应用于所插入对象(粘贴并匹配样式)Control-Command-V将格式设置应用于所选对象(粘贴标尺命令)Command-W关闭最前面的窗口Shift-Command-W关闭文件及其关联窗口Option-Command-W不退出应用程序直接关闭其所有窗口Command-X移去所选内容并存储到夹纸板Command-Z还原上一命令(有些应用程序允许多次还原)Shift-Command-Z重做上一命令(有些应用程序允许多次重做)Control-右箭头聚焦视图(如表格)内的另一个值或单元格Control-左箭头聚焦视图(如表格)内的另一个值或单元格Control-下箭头聚焦视图(如表格)内的另一个值或单元格Control-上箭头聚焦视图(如表格)内的另一个值或单元格Command-右箭头将文本插入点移至当前行的行尾Command-左箭头将文本插入点移至当前行的行首Command-下箭头将文本插入点移至文稿的结尾Command-上箭头将文本插入点移至文稿的开头Shift-Command-右箭头选中插入点与当前行行尾之间的文本 (*)Shift-Command-左箭头选中插入点与当前行行首之间的文本 (*)Shift-右箭头将文本选择范围向右扩展一个字符 (*)Shift-左箭头将文本选择范围向左扩展一个字符 (*)Shift-Command-上箭头选中插入点与文稿开头之间的文本 (*)Shift-Command-下箭头选中插入点与文稿结尾之间的文本 (*)Shift-上箭头将文本选择范围扩展到上一行相同水平位置的最近字符边缘 (*)Shift-下箭头将文本选择范围扩展到下一行相同水平位置的最近字符边缘 (*)Shift-Option-右箭头将文本选择范围扩展到当前词的词尾,再按一次则扩展到后一词的词尾 (*)Shift-Option-左箭头将文本选择范围扩展到当前词的词首,再按一次则扩展到后一词的词首 (*)Shift-Option-下箭头将文本选择范围扩展到当前段落的段尾,再按一次则扩展到下一段落的结尾 (*)Shift-Option-上箭头将文本选择范围扩展到当前段落的段首,再按一次则扩展到下一段落的段首 (*)Control-空格键在当前输入源和上一输入源之间切换Option-Control-空格键在所有启用的输入源之间切换Option-Command-esc强制退出(*)注:如果未选择任何文本,则从插入点位置开始扩展。如果通过拖移选择文本,则从所选内容的边缘开始扩展。反向选择所选内容会取消选择相应部分。有关 Mac OS&X&v10.6 中 VoiceOver 组合键差异的信息,请参阅此文章。组合键功能Command-F5 或fn Command-F5打开或关闭 VoiceOverControl Option-F8 或fn Control Option-F8打开 VoiceOver 实用工具Control Option-F7 或fn Control Option-F7显示 VoiceOver 菜单Control Option-;或 fn Control Option-;启用/停用 VoiceOver 控制选项锁定Option-Command-8 或fn Command-F11开启缩放功能Option-Command-+放大Option-Command- -(减号)缩小Option-Control-Command-8反转/复原屏幕颜色Control Option-Command-,降低对比度Control Option-Command-.增强对比度注:您可能需要在“键盘”偏好设置中启用“将 F1、F2 等键用作标准功能键”,才能使 VoiceOver 菜单和实用工具正常工作。在“万能辅助”偏好设置中打开鼠标键后,您便可以使用键盘或数字小键盘上的键移动鼠标指针。如果电脑没有数字小键盘,请使用 Fn(功能)键。组合键功能8上移2下移4左移6右移1沿对角线向左下角移3沿对角线向右下角移7沿对角线向左上角移9沿对角线向右上角移5按鼠标按钮0按住鼠标按钮.(数字小键盘上的句点)释放按住的鼠标按钮另请参阅:鼠标快捷键。其他信息高级:本文所指为默认的修饰键分配。可在系统偏好设置的“键盘与鼠标”偏好设置中更改修饰键分配。例如,您可以将 Command 键改为用作 Option 键,反之亦然。您也可以恢复默认修饰键设置。
转载请注明来源:
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。
上一篇:下一篇:
了解这些字:
··········
··········
··········
·········&& 查看话题
Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
对于用过Windows的人,几乎没有人不知道Ctrl+Alt+Del组合键,尤其是在使用经常死机的Windows9x时,使用它的频率更高,这一组合键是专门为了系统安全起见提供的紧急出口。VC知识库在线杂志第11期,ac952_z_cn在他的个人专栏中写过一篇关于这方面的文章:“WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL”。因此本文侧重于介绍在Windows XP中如何实现屏蔽CTRL+ALT+DEL组合键,也就是任务管理器,任务切换组合键(Alt+Tab),任务栏和“开始”菜单(Ctrl+Esc,VK_LWIN,VK_RWIN)。这个方法也能应用于Windows 2000环境。
& & 在Windows 9x/Me系统中,屏蔽Ctrl+Alt+Del和各种任务开关键的方法是通过下面的方法实现的: BOOL bOldS
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, TRUE, &bOldState, 0);& && &
& & MS大佬认为这种方法很业余,所以在Windows NT/2000/XP中对此进行了修改。在这些较新的Windows版本中用户登陆使用Winlogon和GINA——Graphical Identification and Authentication,意思是图形化的身份认证,挺吓唬人的是不是!其实就那么回事。Winlogon是Windows系统的一部分,它专门提供交互式登陆支持,而GINA则是Winlogon用来实现认证的一个DLL——这个DLL就是msgina.dll。WlxInitialize、WlxActivateUserShell便是其中输出,当然不知这两个,还有别的。前者进行自身的初始化,后者激活用户的外壳程序。Windows就是用这个DLL来实现用户名+口令的身份认证的,但是开发人员可以用自己的GINA代替msgina.dll。例如,实现智能卡、视网膜扫描仪、DNA检查等等认证机制来代替输入用户名+口令形式的身份检查。 下面的表格中列出了与GINA有关的全部函数。其中有一个是WlxLoggedOnSAS,当按下Ctrl+Alt+Del 键时,Winlogon便调用这个函数。&&
GINA 函数一览表 函数&&描述&&
WlxActivateUserShell 激活用户外壳程序&&
WlxDisplayLockedNotice 允许GINA DLL 显示锁定信息&&
WlxDisplaySASNotice&&当没有用户登陆时,Winlogon调用此函数&&
WlxDisplayStatusMessage Winlogon 用一个状态信息调用此函数进行显示&&
WlxGetConsoleSwitchCredentials&&Winlogon调用此函数读取当前登陆用户的信任信息,并透明地将它们传到目标会话&&
WlxGetStatusMessage&&Winlogon 调用此函数获取当前状态信息&&
WlxInitialize&&针对指定的窗口位置进行GINA DLL初始化&&
WlxIsLockOk&&验证工作站正常锁定&&
WlxIslogoffOk&&验证注销正常&&
WlxLoggedOnSAS&&用户已登陆并且工作站没有被加锁,如果此时接收到SAS事件,则Winlogon 调用此函数&&
WlxLoggedOutSAS&&没有用户登陆,如果此时收到SAS事件,则Winlogon 调用此函数&&
WlxLogoff&&请求注销操作时通知GINA DLL& &
WlxNegotiate&&表示当前的Winlogon版本是否能使用GINA DLL&&
WlxNetworkProviderLoad&&在加载网络服务提供程序收集了身份和认证信息后,Winlogon 调用此函数&&
WlxRemoveStatusMessage&&Winlogon 调用此函数告诉GINA DLL 停止显示状态信息&&
WlxScreensaverNotify&&允许GINA与屏幕保护操作交互&&
WlxShutdown&&在关闭之前Winlogon 调用此函数,允许GINA实现任何关闭任务,例如从读卡器中退出智能卡&&
WlxStartApplication&&当系统需要在用户的上下文中启动应用程序时调用此函数&&
WlxWkstaLockedSAS 当工作站被锁定,如果接收到一个SAS,则Winlogon 调用此函数&&
& & 在默认情况下,GINA显示登陆对话框,用户输入用户名及口令。所以要想屏蔽掉Ctrl+Alt+Del,则可以写一个新的MyGina.dll,其中提供接口调用msgina.dll的函数WlxLoggedOnSAS,从而实现Ctrl+Alt+Del屏蔽。或者编写一个键盘驱动程序来实现。&&
& & 难道屏蔽Ctrl+Alt+Del真的象上述所说的那么麻烦吗?有没有更好的方法呢?答案是肯定的。所以忘掉GINA吧,使用操作系统的策略设置完全可以搞掂这个问题。方法是进入"开始"菜单,选择"运行",然后在运行对话框中输入"gpedit.msc",启动Windows系统的组策略编辑器。在左边窗格查看"用户配置|管理模板|系统|登录/注销",则在右边窗格策略里不难发现"禁用任务管理器"一项。
组策略编辑器&&
通过对这个策略的设置可以屏蔽掉Ctrl+Alt+Del。如果要通过编写代码来实现,则必须操作下面的注册表项: HKCU\
&&Microsoft\
& &Windows\
& & CurrentVersion\
& &&&Policies\
& && &System\DisableTaskMgr = dword:1
如此设置之后,则在Windows XP中,如果用户按下Ctrl+Alt+Del,则会弹出一个出错对话框错误信息&&注意这里假设在控制面板中“用户帐号”管理的“选择登录和注销选项”设置启用了“使用欢迎屏幕”一项
否则,XP将使用Windows的传统登录模式,要求用户输入帐户名。并且Ctrl+Alt+Del组合键的 行为也和传统的行为一样,注册表中DisableTaskMgr的设置也只是将登录/注销对话框中的任务管理器按钮屏蔽或置灰。 有人可能会问,有关任务管理器的文档又没有明确说明,那你是怎么知道DisableTaskMgr是用来禁用任务管理器的呢?告诉你吧, 我是在使用GPEDIT时发现的。GPEDIT是一个非常有用的工具,不仅可以用它来编辑策略,还可以用它来发现策略。利用这个工具 可以轻松控制Windows的许多东西,从许可权限的存取到是否使用IE的传统外观,从是否显示对话框中的Places Bar到是否用Ctrl+Alt+Del 启动任务管理器。总之用它可以配置上百个界面行为,因此它是一个足以让系统管理员垂延三尺的工具。 一旦找到了感兴趣的策略,那如何知道相应的注册表位置呢?有两种方法。第一种是比较粗鲁的办法:在修改策略的前后将注册表输出到 一个.reg文件,然后比较它们有什么不同。所有的策略无外乎以下的四个注册表键: // 用户指定
HKEY_CURRENT_USER\Software\Policies&&
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies
// 机器指定&&
HKEY_LOCAL_MACHINE\Software\Policies&&
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies& && &
& & 第二种方法是直捣信息源头--检查描述策略的管理模板文件(.adm)。下面是Windows XP的system.adm文件对 DisableTaskMgr的描述:(Windows 2000对此的描述稍有不同,其细节请参考Windows 2000的资源开发包) CATEGORY !!CADOptions
& & #if version >= 4
& && &&&EXPLAIN !!CADOptions_Help
& & #endif
& & KEYNAME "Software\Microsoft\Windows\CurrentVersion\Policies\System"
& & POLICY !!DisableTaskMgr& &&&
& && &&&#if version >= 4
& && && && &SUPPORTED !!SUPPORTED_Win2k
& && &&&#endif
& && &&&EXPLAIN !!DisableTaskMgr_Help
& && &&&VALUENAME "DisableTaskMgr"
& & END POLICY
& & ; More Ctrl+Alt+Del policies here...
END CATEGORY ; Ctrl+Alt+Del options
DisableTaskMgr_Help="防止用户启动''任务管理器''(Taskmgr.exe)。\n\n如果该设置被启用,并且用户试图启动任务管理器,系统
会显示消息,解释是一个策略禁止了这个操作。\n\n任务管理器让用户启动或终止程序,监视计算机性能,查看及监视计算机上所有运行
中的程序 (包含系统服务), 搜索程序的执行文件名,及更改程序运行的优先顺序。"
DisableTaskMgr="删除任务管理器"&&
以上是DisableTaskMgr的描述片断&&
& & 正是在这段描述中KEYNAME 和VALUENAME指定了注册表的键值对。利用这种方法,你可以为自己的应用程序创建管理模板和策略,但编辑和浏览.adm模板文件的编辑器必须支持Unicode字符。如Notepad或者WordPad等都可以。此外,使用管理模板文件,系统管理员可以用它为整个组织配置需要的策略——由此可以看出,此文件在系统中的地位举足轻重!有关模板管理文件格式的详细信息请参考平台SDK。最后需要强调的是DisableTaskMgr只是禁用Ctrl+Alt+Del的功能。下面我们来讨论如何捕获它的按键序列。要想截获Ctrl+Alt+Del,有三种可选择的方法:&&
1、 编写一个GINA代理;此方法我们在以后的文章中介绍。实际上,ac952_z_cn的个人专栏文章:“WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL”使用的就是这种方法。&&
2、 编写一个键盘驱动程序;本文例子程序使用的方法。&&
3、 用自己的程序代替任务管理器程序TaskMgr.exe。&&
屏蔽Ctrl+Alt+Del解决方案的具体实现细节请参考本文的例子代码。&&
& & 下面让我们来解决屏蔽任务切换键序列的问题,这些键序列包括Alt+Tab、Ctrl+Esc、Alt+Esc、VK_LWIN/VK_RWIN以及任务栏。在很早以前的Window 3.1年代,处理这个问题的方法是通过WM_SYSKEYDOWN实现。到了Windows 9x时期,本文前面提到过对这个问题的处理方法,使用SPI_SETSCREENSAVERRUNNING。但是进入Windows NT 4.0 (SP3 +),Windows 2000以及Windows XP时代,对这个问题的处理已经有所不同,必须写一个低级的键盘驱动钩子。不要怕,因为要实现这个钩子并不是很难。本文下面会介绍如何实现这个键盘钩子。一般来讲,系统级钩子必须是一个DLL。下面是本文提供的一个键盘钩子DLL的源代码片断(TaskKeyHook.dll):头文件
////////////////////////////////////////////////////////////////
//TaskKeyHook.h
#define DLLIMPORT __declspec(dllimport)
DLLIMPORT BOOL DisableTaskKeys(BOOL bEnable, BOOL bBeep);
DLLIMPORT BOOL AreTaskKeysDisabled();
////////////////////////////////////////////////////////////////
// TaskKeyHook.cpp
#define _WIN32_WINNT 0x0500 // for KBDLLHOOKSTRUCT
#include & && && &// MFC core and standard components
#define DLLEXPORT __declspec(dllexport)
//////////////////
// App (DLL) object
class CTaskKeyHookDll : public CWinApp {
& &CTaskKeyHookDll()&&{ }
& &~CTaskKeyHookDll() { }
////////////////////////////////////////////////
// 下面的代码表示这一部分在此DLL所有实例之间共享
// 低级键盘钩子一定是系统级的钩子
#pragma data_seg (".mydata")
HHOOK g_hHookKbdLL = NULL; // 钩子句柄
BOOL&&g_bBeep = FALSE;& &&&// 按下非法键时蜂鸣响铃
#pragma data_seg ()
#pragma comment(linker, "/SECTION:.mydata,RWS") // 告诉链接器:建立数据共享段
//////////////////////////////////
// 低级键盘钩子
// 截获任务转换键:不传递直接返回
LRESULT CALLBACK MyTaskKeyHookLL(int nCode, WPARAM wp, LPARAM lp)
& &KBDLLHOOKSTRUCT *pkh = (KBDLLHOOKSTRUCT *)
& &if (nCode==HC_ACTION) {
& && &BOOL bCtrlKeyDown =
& && && &GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT) * 8) - 1);
& && &if ((pkh->vkCode==VK_ESCAPE && bCtrlKeyDown) || // Ctrl+Esc
& && && & // Alt+TAB
& && && & (pkh->vkCode==VK_TAB && pkh->flags & LLKHF_ALTDOWN) ||& &
& && && & // Alt+Esc
& && && & (pkh->vkCode==VK_ESCAPE && pkh->flags & LLKHF_ALTDOWN)||&&
& && && & (pkh->vkCode==VK_LWIN || pkh->vkCode==VK_RWIN)) { // 开始菜单
& && && &if (g_bBeep && (wp==WM_SYSKEYDOWN||wp==WM_KEYDOWN))
& && && && &MessageBeep(0); // 蜂鸣
& && && &return 1; // 不再往CallNextHookEx传递,直接返回
& &return CallNextHookEx(g_hHookKbdLL, nCode, wp, lp);
////////////////////////////////////////////////
// 是否屏蔽任务键序列——也就是说键盘钩子是否安装?
// 注:这里假设没有其它钩子做同样的事情
DLLEXPORT BOOL AreTaskKeysDisabled()
& &return g_hHookKbdLL != NULL;
////////////////////////////////////////////////
// 屏蔽任务键:安装低级键盘构
// 返回当前是否屏蔽标志(TRUE/FALSE)
DLLEXPORT BOOL DisableTaskKeys(BOOL bDisable, BOOL bBeep)
& &if (bDisable) {
& && &if (!g_hHookKbdLL) {
& && && &g_hHookKbdLL = SetWindowsHookEx(WH_KEYBOARD_LL,
& && && && &MyTaskKeyHookLL, MyDll.m_hInstance, 0);
& &} else if (g_hHookKbdLL != NULL) {
& && &UnhookWindowsHookEx(g_hHookKbdLL);
& && &g_hHookKbdLL = NULL;
& &g_bBeep = bB
& &return AreTaskKeysDisabled();
& & 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); // 禁用任务栏 是例子程序运行画面:&&
TrapKeys程序运行画面&&
以下是TrapKeys程序的实现代码: /////////////////////////////////////////////////
// TrapKeys.cpp
#include "stdafx.h"
#include "resource.h"
#include "StatLink.h"
#include "TaskKeyMgr.h"
////////////////////
// 主对话框
class CMyDialog : public CDialog {
& &CMyDialog(CWnd* pParent = NULL) : CDialog(IDD_MYDIALOG, pParent) { }
protected:
& &HICON m_hI
& &CStaticLink m_wndLink1;
& &CStaticLink m_wndLink2;
& &CStaticLink m_wndLink3;
& &virtual BOOL OnInitDialog();
& &// 命令/UI 的更新处理
& &afx_msg void OnDisableTaskMgr();
& &afx_msg void OnDisableTaskKeys();
& &afx_msg void OnDisableTaskbar();
& &afx_msg void OnUpdateDisableTaskMgr(CCmdUI* pCmdUI);
& &afx_msg void OnUpdateDisableTaskKeys(CCmdUI* pCmdUI);
& &afx_msg void OnUpdateDisableTaskbar(CCmdUI* pCmdUI);
& &afx_msg LRESULT OnKickIdle(WPARAM,LPARAM);
& &DECLARE_MESSAGE_MAP()
///////////////////////////////////////////////////////
// 标准的MFC 对话框应用类代码。
class CMyApp : public CWinApp {
& &virtual BOOL InitInstance() {
& && &// 初始化app:运行对话框
& && &CMyD
& && &m_pMainWnd = &
& && &dlg.DoModal();
& && &return FALSE;
& &virtual int ExitInstance() {
& && &// 为了按全起见,在退出程序的时候,将所有禁用的项目复原
& && &CTaskKeyMgr::Disable(CTaskKeyMgr::ALL, FALSE);
& && &return 0;
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
& &ON_COMMAND(IDC_DISABLE_TASKKEYS,OnDisableTaskKeys)
& &ON_COMMAND(IDC_DISABLE_TASKBAR, OnDisableTaskbar)
& &ON_COMMAND(IDC_DISABLE_TASKMGR, OnDisableTaskMgr)
& &ON_UPDATE_COMMAND_UI(IDC_DISABLE_TASKKEYS, OnUpdateDisableTaskKeys)
& &ON_UPDATE_COMMAND_UI(IDC_DISABLE_TASKBAR, OnUpdateDisableTaskbar)
& &ON_UPDATE_COMMAND_UI(IDC_DISABLE_TASKMGR, OnUpdateDisableTaskMgr)
& &ON_MESSAGE(WM_KICKIDLE,OnKickIdle)
END_MESSAGE_MAP()
///////////////////////////////////////////////
// 初始化对话框:子类化超链接柄加栽图标
BOOL CMyDialog::OnInitDialog()
& &CDialog::OnInitDialog();
& &// 初始化超链接
& &m_wndLink1.SubclassDlgItem(IDC_EMAIL,this);
& &m_wndLink2.SubclassDlgItem(IDC_VCKBASEURL,this);
& &m_wndLink3.SubclassDlgItem(IDC_VCKBASELINK,this);
& &// 自己设置对话框图标。MFC不会为对话框应用程序设置它
& &m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
& &SetIcon(m_hIcon, TRUE);& && & // 打图标
& &SetIcon(m_hIcon, FALSE);& && &// 小图标
& &return TRUE;
////////////////////////////////////////////////////////
// 命令/UI 更新处理:写这些东西应该很轻松。
void CMyDialog::OnDisableTaskKeys()
& &CTaskKeyMgr::Disable(CTaskKeyMgr::TASKKEYS,
& && &!CTaskKeyMgr::AreTaskKeysDisabled(), TRUE); // 蜂鸣
void CMyDialog::OnUpdateDisableTaskKeys(CCmdUI* pCmdUI)
& &pCmdUI->SetCheck(CTaskKeyMgr::AreTaskKeysDisabled());
void CMyDialog::OnDisableTaskbar()
& &CTaskKeyMgr::Disable(CTaskKeyMgr::TASKBAR,
& && &!CTaskKeyMgr::IsTaskBarDisabled());
void CMyDialog::OnUpdateDisableTaskbar(CCmdUI* pCmdUI)
& &pCmdUI->SetCheck(CTaskKeyMgr::IsTaskBarDisabled());
void CMyDialog::OnDisableTaskMgr()
& &CTaskKeyMgr::Disable(CTaskKeyMgr::TASKMGR,
& && &!CTaskKeyMgr::IsTaskMgrDisabled());
void CMyDialog::OnUpdateDisableTaskMgr(CCmdUI* pCmdUI)
& &pCmdUI->SetCheck(CTaskKeyMgr::IsTaskMgrDisabled());
} ////////////////////////////////////////////////////////
// 要想让ON_UPDATE_COMMAND_UI正常工作,这是必需的。
LRESULT CMyDialog::OnKickIdle(WPARAM wp, LPARAM lCount)
& &UpdateDialogControls(this, TRUE);
& &return 0;
& &按上述方法尽管禁用了任务栏,但是还有一个机关没有处理,那就是按下Windows键仍然可以弹出“开始”菜单。显然在处理VK_LWIN之前,任务栏不会检查是否被启用。一般来讲,如果某个窗口被屏蔽掉,那么它就不再会处理用户在这个窗口的输入——这就是所谓的禁用(Disable)的含义。通常调用EnableWindow(FALSE)后自然就达到了这个目的。但是处理VK_LWIN/VK_RWIN按键的代码决不会去检查任务栏启用/禁用状态。对此,本文的处理办法仍然是利用键盘钩子。修改一下TaskKeyHook实现,增加对Windows键的捕获。这样按下“开始”菜单键之后什么也不会发生。希望没有漏掉其它的按键。如果哪位读者发现漏掉了什么键,请和我联系,以便把它加到键盘钩子中去。为了简单起见,我在类CTaskKeyMgr中封装了所有禁用的函数。下面是这个类的定义击实现文件: TaskKeyMgr
////////////////////////////////////////
// TaskKeyMgr.h
#pragma once
#include "TaskKeyHook.h"
/////////////////////////////////////////////////////////////////////
// 使用这个类禁用任务键,任务管理器或任务栏。
// 用相应的标志调用Disable,如:CTaskMgrKeys::Disable(CTaskMgrKeys::ALL);
class CTaskKeyMgr {
& && &TASKMGR&&= 0x01,&&// 禁用任务管理器(Ctrl+Alt+Del)
& && &TASKKEYS = 0x02,&&//禁用任务转换键(Alt-TAB, etc)
& && &TASKBAR&&= 0x04,&&//禁用任务栏
& && &ALL=0xFFFF& && &&&//禁用所有东西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
& && &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()
& &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的源代码吧! 很抱歉,本来是有图片的,但是粘贴不上来,大家就将就看了! 有没有简单的方法屏蔽ALT+TAB键呢?
或者告诉直接在注册表里的哪里改啊??
告诉我把!

我要回帖

更多关于 暗黑破坏神3官网 的文章

 

随机推荐