XP环境下如何屏蔽屏蔽ALT+CTRL+DEL键,ALT+TAB键,ALT+F4键
东哥大人 2006-12-06 02:49:25 小弟用的第一种方法:
/*
借花敬佛 ,ilike大哥的文章...
先定义:Function uLong SystemParametersInfoA (ulong uAction, ulong uParam, ref any lpvParam, ulong fuWinIni) Library "user32.dll"
Integer SPI_SCREENSAVERRUNNING = 97
//使Ctrl+Alt+Del失效:
Integer i_ret
any any_value
i_ret = SystemParametersInfoA(SPI_SCREENSAVERRUNNING, 1, any_value, 0)
messagebox('',i_ret)
//恢复Ctrl+Alt+Del作用:
Integer i_ret
any any_value
i_ret = SystemParametersInfoA(SPI_SCREENSAVERRUNNING, 0, any_value, 0)
*/
运行时messagebox显示“0”,当然效果也未达到。我将SPI_SCREENSAVERRUNNING = 98、96、95等messagebox显示“1”。
第二种方法:
/*
定义:
function long GetCurrentProcessId ( ) library "kernel32"
function long RegisterServiceProcess ( long dwProcessID, long dwtype )
library "kernel32"
Constant long RSP_SIMPLE_SERVICE = 1
Constant long RSP_UNREGISTER_SERVICE = 0
在application -> open event中:
Long ll_ProcessID
ll_ProcessID = GetCurrentProcessId ( )
RegisterServiceProcess ( ll_ProcessID, RSP_SIMPLE_SERVICE )
这样程序将不出现在任务列表中,用户也就无法强行结束任务。
记住,在application close event中要加:
Long ll_ProcessID
ll_ProcessID = GetCurrentProcessId ( )
RegisterServiceProcess ( ll_ProcessID, RSP_UNREGISTER_SERVICE)
来释放资源。
--------------------
补充:
补充一下,看了DELPHI的API调用,如果不指定SPI_SCREENSAVERRUNNING的值,就可以屏蔽所有热键,你试试
哦,再找了一下,原来将这个常量设为97就可以屏蔽ctrl+alt+del,alt+tab,ctrl+esc(window键),原理是欺骗wind
续:欺骗windows正处于屏保状态。找得好苦,看来网上的API介绍太不深入了:(
补充:最重要的一点,在NT或2000下是不可以屏蔽的
*/
果然是不行的
小弟初进CSDN,分不多,请高手们不吝赐教!!多谢!!