热情软件屋

 

如何封锁“CTRL+ALT+DEL”和“ALT+ESC”组合键


编号:QA000295
建立日期: 1999年1月4日 最后修改日期:2001年11月25日
所属类别:

yubo:
    如何封锁“CTRL+ALT+DEL”组合键?如何封锁“ALT+ESC”组合键?

回答:

    当用户按下这些组合键时,Windows会发送WM_SYSCOMMAND消息,你可以在程序中截取这个消息,封锁某些组合键。在Windows 95/98下还可以使用SystemParametersInfo(SPI_SCREENSAVERRUNNING)使Windows认为你的程序是个屏幕保护程序,从而禁止程序切换。例子:
    1. 建立一个标准EXE工程。
    2. 添加两个按钮(Command1 and Command2)。
    3. 添加下面的代码到Form1的说明部分:
     Private Const SPI_SCREENSAVERRUNNING = 97&
    
Private Declare Function SystemParametersInfo Lib "User32" _
    
Alias "SystemParametersInfoA" _
    
(ByVal uAction As Long, _
    
ByVal uParam As Long, _
    
lpvParam As Any, _
    
ByVal fuWinIni As Long) As Long
    
    
Private Sub Form_Load()
    
Command1.Caption = "Disabled"
    
Command2.Caption = "Enabled"
    
End Sub
    
    
Private Sub Form_Unload(Cancel As Integer)
    
'Re-enable CTRL+ALT+DEL and ALT+TAB before the program terminates.
    
Command2_Click
    
End Sub
    
    
Private Sub Command1_Click()
    
Dim lngRet As Long
    
Dim blnOld As Boolean
    
lngRet = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, _
    
blnOld, _
    
0&)
    
End Sub
    
    
Private Sub Command2_Click()
    
Dim lngRet As Long
    
Dim blnOld As Boolean
    
lngRet = SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, _
    
blnOld, _
    
0&)
    
End Sub
    

    此外,你可以参考QA000171 "如何封锁ALT-TAB、ALT-CTRL-DEL键以及不让Windows的任务栏出现",DisablePro可以使用于VB,但我未尝试它是否可以使用在其它软件中。
    
    相关问题:
    QA001623 "如何在winnt中屏蔽ctrl+alt+del等组合键"
    
    sapphire的意见:
    http://www.vchelp.net/article/submit/cad_key.htm
    这里有可以屏蔽NT的热启键,但是比较麻烦。

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, Windows API, win32, api, windows api, gdi32, kernel, 键盘与鼠标, mouse, keyboard, hid

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio