📄 turbo c 为什么检测不到alt+ctrl+del键.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0044)http://www.ugpr.com/jsjks/c/shili/jiance.htm -->
<HTML><HEAD><TITLE>乐知网络==>> 计算机考试</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content=乐知网络,计算机等级考试,软件水平考试,proe,pro/e,UG,ansys name=keywords><LINK
href="TURBO C 为什么检测不到ALT+CTRL+DEL键.files/style.css" type=text/css
rel=stylesheet>
<STYLE>TR {
FONT-SIZE: 12px
}
</STYLE>
<META content="MSHTML 6.00.2800.1276" name=GENERATOR></HEAD>
<BODY style="BACKGROUND-ATTACHMENT: fixed" text=#003300 vLink=#002200
bgColor=#cccccc leftMargin=0
background="TURBO C 为什么检测不到ALT+CTRL+DEL键.files/pic063.jpg" topMargin=0>
<SCRIPT language=JavaScript type=text/JavaScript>
<!--
function MM_popupMsg(msg) {
alert(msg);
}
//-->
</SCRIPT>
<TABLE cellSpacing=1 cellPadding=3 width=770 align=center
background="TURBO C 为什么检测不到ALT+CTRL+DEL键.files/top_line.gif" border=0>
<TBODY>
<TR align=left>
<TD noWrap><FONT color=#cccccc>
<SCRIPT language=JavaScript>
var day="";
var month="";
var ampm="";
var ampmhour="";
var myweekday="";
var year="";
mydate=new Date();
myweekday=mydate.getDay();
mymonth=mydate.getMonth()+1;
myday= mydate.getDate();
myyear= mydate.getYear();
year=(myyear > 200) ? myyear : 1900 + myyear;
if(myweekday == 0)
weekday=" 星期日 ";
else if(myweekday == 1)
weekday=" 星期一 ";
else if(myweekday == 2)
weekday=" 星期二 ";
else if(myweekday == 3)
weekday=" 星期三 ";
else if(myweekday == 4)
weekday=" 星期四 ";
else if(myweekday == 5)
weekday=" 星期五 ";
else if(myweekday == 6)
weekday=" 星期六 ";
document.write(year+"年"+mymonth+"月"+myday+"日 "+weekday);
</SCRIPT>
</FONT></TD>
<TD noWrap> </TD>
<TD noWrap> </TD>
<TD noWrap> </TD>
<TD noWrap> </TD>
<TD noWrap></TD>
<TD noWrap> </TD>
<TD noWrap></TD>
<TD noWrap> </TD>
<TD noWrap> </TD>
<TD noWrap>
<P align=right></P></TD></TR></TBODY></TABLE>
<TABLE height=76 cellSpacing=0 cellPadding=0 width=770 align=center
background="TURBO C 为什么检测不到ALT+CTRL+DEL键.files/bottom_line.jpg" border=0>
<TBODY>
<TR>
<TD>
<DIV align=center>
<TABLE height=62 cellSpacing=0 cellPadding=0 width="99%" bgColor=#ffffff
border=0>
<TBODY>
<TR>
<TD width=231><IMG height=77
src="TURBO C 为什么检测不到ALT+CTRL+DEL键.files/logo1.gif" width=226
border=0></TD>
<TD align=middle width=456><FONT
color=#0000ff>建议</FONT>:由于本站空间有限,资料不能一次全部上传,需多次更新资料,为了<BR>你能及时下载最新资料,建议将本站设为首页,或加入收藏夹。 <BR>
<FONT color=#ff0000>声明</FONT><FONT
color=#999999>:本站所有软件和内容都摘录于互联网,仅供研究和学习之用。如有侵犯<BR>版权之处请指出,我们查实后会立即删除。</FONT></TD>
<TD align=middle width=75>
<TABLE cellSpacing=0 cellPadding=1 align=center border=0>
<TBODY>
<TR vAlign=center align=middle>
<TD><IMG height=16
src="TURBO C 为什么检测不到ALT+CTRL+DEL键.files/homepage.gif"
width=16><A
onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.ugpr.com')"
href="http://www.ugpr.com/#"></A></TD>
<TD><A class=date
onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.ugpr.com')"
href="http://www.ugpr.com/#">设为首页</A></TD></TR>
<TR vAlign=center align=middle>
<TD><IMG height=17
src="TURBO C 为什么检测不到ALT+CTRL+DEL键.files/email.gif" width=16><A
href="mailto:WebMaster@Mesky.Net"></A></TD>
<TD><A href="mailto:abushuaihou@163.com">联系我们</A></TD></TR>
<TR vAlign=center align=middle>
<TD><IMG height=16
src="TURBO C 为什么检测不到ALT+CTRL+DEL键.files/Favorites.gif"
width=16><A title=乐知网络
onclick="window.external.addFavorite('http://www.ugpr.com','乐知网络')"
href="http://www.mesky.net/"></A></TD>
<TD><A title=乐知网络
onclick="window.external.addFavorite('http://www.ugpr.com','乐知网络')"
href="http://www.ugpr.com/">加入收藏</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE>
<TABLE height=30 cellSpacing=0 cellPadding=1 width=770 align=center
background="TURBO C 为什么检测不到ALT+CTRL+DEL键.files/topbg.gif" border=0>
<TBODY>
<TR>
<TD class=bottomindex align=middle>
<P align=left><STRONG><FONT color=#cc6600> 邮箱快速登陆→</FONT></STRONG>帐号:
<INPUT style="FONT-SIZE: 12px" tabIndex=1 size=14 name=user> 信箱:<SELECT
tabIndex=2 size=1 name=site><OPTION value=""
selected>请选择信箱</OPTION><OPTION value=21cn.com>@21cn.com</OPTION><OPTION
value=163.net>@163.net</OPTION><OPTION
value=tom.com>@tom.com</OPTION><OPTION
value=163.com>@163.com</OPTION><OPTION
value=vip.163.com>@vip.163.com</OPTION><OPTION
value=sohu.com>@sohu.com搜狐邮箱</OPTION><OPTION
value=263.net>@263.net</OPTION><OPTION
value=sina.com>@sina.com新浪</OPTION><OPTION
value=vip.sina.com>@vip.sina.com新浪VIP</OPTION><OPTION
value=mail.china.com>@mail.china.com</OPTION><OPTION
value=china.com>@china.com</OPTION><OPTION
value=netease.com>@netease.com</OPTION><OPTION
value=yeah.net>@yeah.net</OPTION><OPTION
value=etang.com>@etang.com亿唐</OPTION><OPTION
value=fm365.com>@fm365.com</OPTION><OPTION
value=cn.yahoo.com>@yahoo.com.cn</OPTION><OPTION
value=xinhuanet.com>@xinhuanet.com新华网</OPTION></SELECT> 密码:<INPUT
style="FONT-SIZE: 12px" tabIndex=3 type=password size=13 name=pass> <INPUT style="FONT-SIZE: 12px" onclick="setTimeout('clearpass()',1000)" tabIndex=4 type=submit value=登录 name=Submit2>
<A href="http://www.hao123.com/mail.htm">申请信箱</A> <A
href="http://ally.263.net/servlet/mailally?id=190"><FONT
color=#ff0000>免费信箱</FONT></A></P></TD></TR></TBODY></TABLE>
<DIV align=center>
<TABLE height=50 cellSpacing=0 width=770 bgColor=#efefef border=0>
<TBODY>
<TR>
<FORM name=form action=../Search.asp method=post>
<TD width=768 bgColor=#cc6600><FONT
color=#ffffff>>>计算机考试></FONT><FONT
color=#ffffff>C语言专区</FONT><FONT
color=#ffffff> |</FONT><A
href="http://www.ugpr.com/"><FONT color=#ffffff>首页</FONT></A><FONT
color=#ffffff> </FONT><FONT color=#ffffff>|<A
href="http://www.ugpr.com/jsjks/c/jsjks.htm"> </A></FONT><A
href="http://www.ugpr.com/jsjks/c/jsjks.htm"><FONT
color=#ffffff>计算机考试</FONT></A><FONT color=#ffffff> |<A
href="http://www.ugpr.com/jsjks/proe/proe.htm"> </A></FONT><A
href="http://www.ugpr.com/jsjks/proe/proe.htm"><FONT
color=#ffffff>Pro/ENGINEER</FONT><FONT color=#ffffff> </FONT></A><FONT
color=#ffffff>| <A
href="http://www.ugpr.com/jsjks/ug/ug.htm"></A></FONT><A
href="http://www.ugpr.com/jsjks/ug/ug.htm"><FONT
color=#ffffff>Unigraphics</FONT></A><FONT color=#ffffff> | <A
href="http://www.ugpr.com/ansys/ansys.htm"><FONT
color=#ffffff>ANSYS</FONT></A> | </FONT><A
href="http://www.ugpr.com/jsjks/shoucang/shoucang.htm"><FONT
color=#ffffff>本站收藏</FONT></A><FONT color=#ffffff> | </FONT><A
href="http://www.ugpr.com/jsjks/aboutme/aboutme.htm"><FONT
color=#ffffff>关于站长</FONT></A><FONT color=#ffffff>|</FONT></TD></FORM></TR>
<TR>
<TD width=768 bgColor=#efefef>
<TABLE id=table1 cellSpacing=0 cellPadding=0 width=767 align=center
border=0>
<TBODY>
<TR style="FONT-SIZE: 12px">
<TD style="FONT-SIZE: 12px" vAlign=bottom width=86 bgColor=#008000>
<P> </P>
<P> </P>
<P> </P>
<P> </P>
<P>
<P><B><A href="http://www.ugpr.com/jsjks/c/shi.htm"><FONT
color=#ffffff><回上页</FONT></A></B></P></TD>
<TD style="FONT-SIZE: 12px" vAlign=top width=575>
<P align=left> </P>
<P align=left> </P>
<P align=left>TURBO C 为什么检测不到ALT+CTRL+DEL键<BR><BR> 笔者在用C
语言编制程序过程中, 需要对热启动按键组合(ALT+CTRL+DEL)进行处理, 使用标准的中断服务程序格式重新定义INT 9
键盘服务模块, 在新的服务程序中始终未能检测到热启动组合键, 而把此程序改为对其它任何按键或按键组合的检测时, 都能疏而不漏的截获,
说明程序结构无任何错误, 此问题经过仔细研究, 终于找到了问题的所在和解决办法。常规的中断服务程序格式如下:<BR>void
interrupt newint09h()<BR>{ /*新的INT 9服务程序*/<BR>int key;<BR>char far
*f=(char far *)0x0417; /*按键状态单元*/<BR>(*old09h)();
/*转原中断服务程序*/<BR>key=inportb(0x60);
/*读PA口内容*/<BR>if((key==0x53)&&(*f&ALT)&&(*f&CTRL)){
......}<BR>......<BR>}<BR>从上面程序可以看出, 在新的INT9模块中, 首先是调用原INT 9 中断,
问题就出现在这里, 当检测热启动按键时, 由于在(*OLDINT9)()执行时, 已经转入了热启动入口,
所以以下的识别程序根本得不到执行机器已经重新启动, 所以不可能检测到热启动按键组合, 而对于其它按键来说, 执行完原INT 9 中断后,
又返回执行下面的检测程序, 所以能够准确无误的识别。从此可以看出,TURBO C中断服务子程序存在一个弱点,
即用此方法编制的识别按键程序, 其优先级皆低于原有按键功能的级别, 也就是说, 只有在执行完原按键功能之后,
才开始检测用户定义的按键。解决此问题的办法是, 在新的中断服务程序中, 不要首先调用原中断模块, 而把其放在服务程序的出口处,
这样即可以首先安排按键检测程序代码, 以保证准确识别任何按键或组合并且可以使所定义按键具有很高的优先级。这种作法涉及的一个问题是,
因为INTERRUPT 型函数在入口处自动保存所有寄存器值, 而在出口处自动恢复各寄存器 值, 并且以IRET指令返回,
此特点决定了使用常规格式的安全性, 因入口处各寄存器值皆无变化, 所以直接调用原中断服务模块可以顺利返回,
如果按本人上述的方法在出口处调用原中断功能, 此时各寄存器值可能发生变化, 不能保证原中断功能的正确调用, 解决此问题的办法是,
在中断服务程序入口人为的保存所使用的寄存器的值, 而在调用原中断功能前恢复初值, 即可保证安全调用。文后是用TURBO C
编写的一个演示程序, 此程序即按上述过程编写, 但省略了对寄存器值的保存和恢复过程。此程序编译为EXE 文件, 运行一次驻留内存,
之后按热启 动按键时, 将在屏幕右上角显示“ ”, 之后按任意键恢复到原来状态。<BR><BR>
<P align=left>
<P align=left>
<P align=left>
<P align=left><BR> </P></TD>
<TD style="FONT-SIZE: 12px" vAlign=top width=79
bgColor=#008000> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV>
<TABLE height=65 cellSpacing=0 cellPadding=0 width=770 align=center
background="TURBO C 为什么检测不到ALT+CTRL+DEL键.files/bottom_line.gif" border=0>
<TBODY>
<TR>
<TD height=5> </TD></TR>
<TR>
<TD align=middle>
<SCRIPT src=""></SCRIPT>
<SCRIPT>var tc_user="adu520";var tc_class="2";</SCRIPT>
<SCRIPT src=""></SCRIPT>
<SCRIPT src=""></SCRIPT>
</TD></TR>
<TR>
<TD align=middle>
<DIV align=center><FONT face=Verdana, size=2 sans-serif Helvetica,
Arial,>CopyRight© </FONT><FONT size=2 sans-serif helvetica, arial,>2003
</FONT><A href="http://adu520.yeah.net/"><STRONG><FONT color=#000000
size=2 sans-serif helvetica, arial,>乐知网络</FONT></STRONG></A><FONT
face=Verdana, size=2 sans-serif Helvetica, Arial,>All Rights
Reserved</FONT></DIV></TD></TR>
<TR>
<TD align=middle>
<DIV align=center>
<P align=center>未经授权禁止复制或建立镜像。谢谢!</P></DIV></TD></TR></TBODY></TABLE>
<SCRIPT src=""></SCRIPT>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -