当前位置: 技术问答>linux和unix
在DOS下如何禁止Ctrl-Alt-Del功能
来源: 互联网 发布时间:2014-11-30
本文导语: 请问各位大虾,如何在DOS下禁止Ctrl-Alt-Del功能,或获得Ctrl-Alt-Del程序的入口地址。我现在要写一个程序在按Ctrl-Alt-Del前作一些事情,谢谢! | 每个键(包括up&down)都有不同的硬件扫描码,通...
请问各位大虾,如何在DOS下禁止Ctrl-Alt-Del功能,或获得Ctrl-Alt-Del程序的入口地址。我现在要写一个程序在按Ctrl-Alt-Del前作一些事情,谢谢!
|
每个键(包括up&down)都有不同的硬件扫描码,通常down+80h=up.
tc下判断ctrl_down,Ctrl_up有个简单方法,就是监测绝对内存0x417L:
Keyboard Flags Bytes 0 and 1
|7|6|5|4|3|2|1|0| 40:17 Keyboard Flags Byte 0
| | | | | | | |---- right shift key depressed
| | | | | | |----- left shift key depressed
| | | | | |------ CTRL key depressed
| | | | |------- ALT key depressed
| | | |-------- scroll-lock is active
| | |--------- num-lock is active
| |---------- caps-lock is active
|----------- insert is active
|7|6|5|4|3|2|1|0| 40:18 Keyboard Flags Byte 1
| | | | | | | |---- left CTRL key depressed
| | | | | | |----- left ALT key depressed
| | | | | |------ system key depressed and held
| | | | |------- suspend key has been toggled
| | | |-------- scroll lock key is depressed
| | |--------- num-lock key is depressed
| |---------- caps-lock key is depressed
|----------- insert key is depressed
这两个byte是由int 9维护的,所以用这方法是不能拦截Ctrl_Alt_Del。
tc下判断ctrl_down,Ctrl_up有个简单方法,就是监测绝对内存0x417L:
Keyboard Flags Bytes 0 and 1
|7|6|5|4|3|2|1|0| 40:17 Keyboard Flags Byte 0
| | | | | | | |---- right shift key depressed
| | | | | | |----- left shift key depressed
| | | | | |------ CTRL key depressed
| | | | |------- ALT key depressed
| | | |-------- scroll-lock is active
| | |--------- num-lock is active
| |---------- caps-lock is active
|----------- insert is active
|7|6|5|4|3|2|1|0| 40:18 Keyboard Flags Byte 1
| | | | | | | |---- left CTRL key depressed
| | | | | | |----- left ALT key depressed
| | | | | |------ system key depressed and held
| | | | |------- suspend key has been toggled
| | | |-------- scroll lock key is depressed
| | |--------- num-lock key is depressed
| |---------- caps-lock key is depressed
|----------- insert key is depressed
这两个byte是由int 9维护的,所以用这方法是不能拦截Ctrl_Alt_Del。
|
重写键盘中断服务程序(int 9),大致流程如下:
读输入键值key
if key=1dh then flag1=1 ;Ctrl_down
if key=9dh then flag1=0 ;Ctrl_up
if key=38h then flag2=1 ;Alt_down
if key=0b8h then flag2=0 ;Alt_up
if key=53h then flag3=1 ;Del_down
if key=0d3h then flag3=0 ;Del_up
if flag1+flag2+flag3=3 then
先在这里做一些事情
调用原键盘中断服务程序
see?
读输入键值key
if key=1dh then flag1=1 ;Ctrl_down
if key=9dh then flag1=0 ;Ctrl_up
if key=38h then flag2=1 ;Alt_down
if key=0b8h then flag2=0 ;Alt_up
if key=53h then flag3=1 ;Del_down
if key=0d3h then flag3=0 ;Del_up
if flag1+flag2+flag3=3 then
先在这里做一些事情
调用原键盘中断服务程序
see?
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。