你要屏蔽一个键(比如回车),还是全部?不论怎样都与他们的ASCII有关,单一屏蔽可以用IF KEY=13(回车)THEN ... 全部屏蔽则要用循环。

解决方案 »

  1.   

    mov al,02h
    out 21h,al
    就可以将键盘封住的。如果用
    mov al,0ffh 
    out 21h,al 就把所有中断都封住啦!按关机钮都不好使!要按reset的! 
      

  2.   

    这件事我已经搞了几个月了。做的是一个局域网中的远程控制程序。基本上全部解决了。只是现在还有几个问题!当我控制客户端时如果锁定对方MOUSE和键盘,用HOOK的话,客户端的键盘比如ALT+F4无法锁定!用汇编的话:我只知锁20端,而无法清空缓存区的数据!不知 wzrlover(wzrlover)有没办法。望告知!
    锁定MOUSE的话用汇编就不会了。用HOOK的话,我做了一个内存镜象文件,当控制端向客户端发来MOUSE消息时,内存中某位付值TRUE,HOOK程序再读这位,如果是TRUE,让这个MOUSE动作实行,FALSE就不实行,可是发现比如MOUSE在菜单选择时控制端要连续发几个同样的MOSE点击动作才有反应。不用HOOK的话就很正常。可见HOOK还是不太好用的,也不知是我能力差还是怎样。但我认为最好还是不要用HOOK!
      

  3.   

    mov al,02h
    out 21h,al
    就可以将键盘封住的。如果用mov al,0ffh 
    out 21h,al 
    就把所有中断都封住啦!按关机钮都不好使!要按reset的! 
      

  4.   

    TO:wzrlover(wzrlover)
    你是说I/O中断吗?还是全部?
      

  5.   

    我想知道在本机上的如何处理,例如要屏蔽字母键后,  在edit1 keydown 事件中如何处理   if key = uchar('a')   then 再如何写
      

  6.   

    全部;
    if key = uchar('a')   then  key:=#0;
      

  7.   

    TO:wzrlover(wzrlover) 
    没用,OFF一样只是锁掉键盘而以,而且缓存区中一样保留着键值!看来你对汇编很熟的,帮我解释一下这个好吗??盘缓冲区0040:001e-0040:003e,为一环形队列。队首指针0040:001a,队尾指针0040:001c,试试看下面的程序:
    in al,61h
    mov ah,al
    or al,?        //?是怎么?
    out 61h,al
    in al, 60h
    mov scancode, al
    mov al,ah
    out 61,al
    mov al,20h
    out 20h,al
    清空缓存区