如何封锁“CTRL+ALT+DEL”和“ALT+ESC”组合键
编号:QA000295
建立日期: 1999年1月4日 最后修改日期:2001年11月25日
所属类别:
Q
yubo:
如何封锁“CTRL+ALT+DEL”组合键?如何封锁“ALT+ESC”组合键?
A回答:
当用户按下这些组合键时,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。
| |
|
|
| |
|
|