CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

如何完全锁住键盘?

楼主Cleverhare(笨笨兔)2001-02-05 16:10:00 在 C++ Builder / 基础类 提问

工作中需要在NT系统启动后完全锁住键盘只留鼠标(拔掉键盘CMOS自检就通不过).考虑用HOOK,但只能锁字母和数字。象ALT_F4,C_A_D,   Ctrl_Esc应该是系统接管的,有人试过没有? 问题点数:30、回复次数:32Top

1 楼Cleverhare(笨笨兔)回复于 2001-02-05 17:11:00 得分 0

补充一点:我用的工控软件Rsview可以锁CAD但不锁Alt_F4和WIN,另一个叫FIX中是可以全锁的。Top

2 楼rh(花覆茅檐)回复于 2001-02-05 22:43:00 得分 0

写一个vxd(主要是为了对端口进行直接编程,不一定要vxd)  
  然后对21号端口(ibm   pc)取值  
  将这个值与2进行或运算  
  将这个值写入21号端口  
  就可以了Top

3 楼smartarrow(风色幻想)回复于 2001-02-06 10:33:00 得分 0

wwwTop

4 楼smartarrow(风色幻想)回复于 2001-02-06 10:33:00 得分 0

wwwTop

5 楼guanri(冠日)回复于 2001-02-06 10:52:00 得分 0

rh(迎风飞扬)可以讲一讲  
  21号端口么,为什么这样做?  
  vxd,好像不能在nt,下用Top

6 楼Tice(孤笑)回复于 2001-02-06 15:39:00 得分 0

HooK,不传递键盘消息!Top

7 楼NowCan(城市浪人)回复于 2001-02-06 18:40:00 得分 0

21号端口是中断控制器,写这个端口是为了屏蔽键盘中断。Top

8 楼Cleverhare(笨笨兔)回复于 2001-02-07 10:54:00 得分 0

1.   rh,在DOS下肯定可以这样做。直接不理键盘中断,系统也就不会得到键盘消息了。  
  2.   从旧贴上看guanri说的也对,NT下不能用vxd,用的叫ddk,我对ddk一无所知。。。。。  
  3.   大家能分析一下我说的Rsview   和FIX中的实现思路吗?那可是在软件上设置后启动就生效了。。。象自动登录我已经知道改注册表就能实现,但屏蔽键盘(还可以任意设置屏蔽哪些键!)。。。  
  Top

9 楼Phoenix2000(Phoenix2000)回复于 2001-02-08 20:36:00 得分 0

哪里需要写什么   VxD   呀,只需要使欺骗   Windows,使系统认为进入屏幕保护状态,就可以评比任何按键。注意,我这里说的“欺骗”,并不是运行屏保程序。进入屏保状态很简单:  
  SystemParamsInfo(SPI_SCREENSAVERRUNNING,   TRUE,   NULL,   0);  
  这时系统并没有运行屏保,但此时确实进入了屏保状态。任何按件包括   Ctrl   +   Alt   +   Del   都无效了。要退出这种状态也很简单:  
  SystemParamsInfo(SPI_SCREENSAVERRUNNING,   FALSE,   NULL,   0);  
  就可以了  
  Top

10 楼Raptor(猛禽)回复于 2001-02-08 20:45:00 得分 0

NT下用WDM嘛,好像跟VXD也差不多。Top

11 楼Sunny_Yirui(雪飘飘)回复于 2001-02-09 09:43:00 得分 0

Phoenix2000!!Top

12 楼Cleverhare(笨笨兔)回复于 2001-02-09 10:04:00 得分 0

1.   rh,   在98的dos窗口下用debug敲入以下代码:  
  mov   dx,21  
  in   al,dx  
  or   al,2  
  out   dx,al  
  int   20  
  运行后本dos窗口中键盘失效,但并不影响到其他windows程序,存成.com后也是如此。难道windows对每个应用程序都提供一个虚拟环境(包括硬件端口)?  
   
  2.   phoenix2000,   在屏保状态下不是随便敲个键就退出屏保了吗?又如何谈得上屏蔽了键盘呢?  
  Top

13 楼Phoenix2000(Phoenix2000)回复于 2001-02-09 15:05:00 得分 0

Cleverhare(笨笨兔:  
   
  你没听懂我的意思!我所说的进入屏保状态不是运行屏保程序,而是使系统认为处在屏保状态下,这时你所敲的任何键都会被系统截获送给你的应用程序,你的程序可以对按键进行过滤,也可以不予处理,着不久相当于屏蔽了键盘吗?  
   
  再说一次,使系统进入屏保状态   不等于   运行屏幕保护程序!!!Top

14 楼Cleverhare(笨笨兔)回复于 2001-02-14 10:30:00 得分 0

phoenix2000,你说的应该可行。在BCD   5.0   的关于SDK的帮助中查到   SystemParamsInfo   在winuser.h中,可是实际上并不在!应该include哪个.h呢?Top

15 楼Sunny_Yirui(雪飘飘)回复于 2001-02-14 10:37:00 得分 0

不用INCLUDE什么,直接用就行!Top

16 楼Cleverhare(笨笨兔)回复于 2001-02-14 17:06:00 得分 0

phoenix2000,应该是SystemParametersInfo,不过我简单地把它写在一个按纽的click中却没有什么效果,请明示!  
  另外我还是不明白在纯dos下用rh(迎风飞扬)的方法是可行的,在98和NT中难道能虚拟一个硬件环境?要不就是系统根本就不执行往20h的out?  
  mov   dx,21  
  in   al,dx  
  or   al,2  
  out   dx,al  
  int   20  
  直接屏蔽键盘中断应该是一个好办法,希望大虾能实现!  
  Top

17 楼Benni()回复于 2001-02-15 16:04:00 得分 0

我觉者在NT下不容易,否则你的程序响应后画一个登陆界面,那用户名、密码不就是你的了吗?  
  NT没那么傻!Top

18 楼wlmail(王立)回复于 2001-02-16 19:13:00 得分 0

把ps头拔掉不就行了?呵呵Top

19 楼Phoenix2000(Phoenix2000)回复于 2001-02-17 20:14:00 得分 10

用   SystemParametersInfo   函数是主要的,但还有其他一些细节地方,这里很难全部讲清。我有一个范例程序,运行后完全封锁键盘鼠标(计算机被锁住),必须输入密码后才能退出。我可以把源代码和编译后的程序给你,自己研究一下。Top

20 楼songhtao(三十年孤独)回复于 2001-02-17 20:53:00 得分 0

在程序中屏蔽掉键盘按健象我在“怎样捕捉方向键?“说的一样,不过把  
  Form-〉KeyPreview:=true应该可以吧。    
  Top

21 楼AutoAsm(风流总被雨打风吹去)回复于 2001-02-18 12:05:00 得分 0

用DriverStudio写个键盘驱动Top

22 楼wxz(行舟)回复于 2001-02-18 12:23:00 得分 20

我以前也做工控的,但是在cmos中可以锁住键盘,只要设置错误中断方式为No   Error(可能使其它的单词)。是不是现在的工控机变了?  
  呵呵,与编程无关。  
  Top

23 楼Zibao(Zibao)回复于 2001-02-18 12:58:00 得分 0

wxz   说得不错,设为   All   Error,   But   Keyboard   就可以照常启动。不过要事先做好NT的自动登录。Top

24 楼pgcat(将抗日进行到底!(哪怕没有了气!))回复于 2001-02-18 18:23:00 得分 0

rh(迎风飞扬,什么地方找的到关于vxd编程的资料Top

25 楼rh(花覆茅檐)回复于 2001-02-18 18:28:00 得分 0

2   pgcat(可信度好)   
  我不知道耶!  
   
  2Cleverhare(笨笨兔) :  
  一个dos环境其实就是一个虚拟机环境  
  你写成wdm格式试试  
   
  很遗憾我也很菜,不能帮你:)  
  Top

26 楼rh(花覆茅檐)回复于 2001-02-18 18:29:00 得分 0

或者Tice(孤笑) 是对的Top

27 楼Cleverhare(笨笨兔)回复于 2001-02-23 14:21:00 得分 0

1.   Benni(), 在   NT   可以通过改注册表很容易实现自动登陆。  
  2.   感谢Phoenix2000   的“我可以把源代码和编译后的程序给你”,请mail到     pyz931@netease.com   ,   如果是bcb的代码则.exe就不必发了。  
  3.   wxz(行舟) Zibao(Zibao) ,不巧现在手上没工控机,但看了几台兼容机的cmos,都没有“错误中断方式”这项。不知我这台有否,等会儿看。  
  4.   rh(迎风飞扬),wdm是不是只有在vc下才有?(不好意思,我更菜   :-)   )  
  。。。。看样子可以准备把分给出去了。。。  
  Top

28 楼qinzm(不归人)回复于 2001-02-23 17:44:00 得分 0

只有写wdm  
  Top

29 楼Cleverhare(笨笨兔)回复于 2001-02-24 18:57:00 得分 0

1   wxz(行舟) Zibao(Zibao) ,   原来是在   cmos   的第一项中的   Holt   On,   你们直接告诉我英文不就得了。害的我去找“Error   Interrupt   method"。  
   
  至此我的目的到是达到了:设置好自动登陆,把cmos按1项设好,拔掉键盘,机器照样能启。OK.  
  我觉得这是一个很好的办法。因为需要锁键盘的场合一般都只会再需要输入密码,而这可以通过写“软键盘”实现。在旧贴上有介绍。  
  但我仍然关注用软件的方法来锁。。。。  
  Phoenix2000   ,我还没收到你的代码。  
   
   
   
   
  Top

30 楼WinterSeo(DelphiWinter(超人Seo))回复于 2001-02-25 20:23:00 得分 0

  把键盘拔掉,外后到CMOS   SETUP中的第一菜单项“STANDARD   COMS   SETUP”中把最后一选项HALT   ON选为“ALL   ERRORS   BUT   KEYBOARD”即可,绝对好用!Top

31 楼Sunny_Yirui(雪飘飘)回复于 2001-02-26 09:12:00 得分 0

WinterSeo(DelphiWinter(超人Seo)) :佩服!!Top

32 楼yeqiufeng(叶秋枫)回复于 2001-05-01 10:27:00 得分 0

谁能在WIN98下只锁定键盘不屏蔽其他  
   
  我就佩服得五体投地了Top

相关问题

  • ~~请问,如何锁住键盘???~~
  • 您好! 请问如何锁住键盘??
  • 如何锁住电脑键盘
  • 在NT/win2000下如何锁住键盘鼠标?急!
  • Java中可以锁住键盘吗??
  • UltraEdit中 键盘被锁住了
  • vc实现锁住键盘鼠标
  • 如何在c#Winform中完全截获键盘消息
  • 怎么可以锁住键盘,开启键盘!
  • 如何锁住光标?

关键词

  • 键盘
  • 屏保
  • 端口
  • 屏蔽
  • 中断
  • 系统
  • 代码
  • 密码
  • nt
  • 锁住

得分解答快速导航

  • 帖主:Cleverhare
  • Phoenix2000
  • wxz

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo