高分悬赏!(200分)

  • 主题发起人 主题发起人 Ford
  • 开始时间 开始时间
F

Ford

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在WINDOWS NT或2000下拦截系统键,如CTRL+ALT+DEL、ALT+TAB,让他们失效?
 
  有时我们不希望程序被用户用Alt+Tab、Ctrl+Alt+Del、Ctrl+Esc等系统功能键打断(比如自动演示程序),那么该怎么做呢?提示你一点,在运行屏幕保护程序的时候,这些功能键都是不起作用的——也就是说,只要在你的程序运行过程中,“欺骗”一下Windows,使它自以为正处在屏幕保护状态就成了!请看下面这段代码:
  var
  temp : integer;
  begin
   SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @temp, 0);
  end;
   当然,在程序结尾处千万别忘了恢复设置,把Windows“唤醒”。代码如下:
  var
  temp : integer;
  begin
   SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, @temp, 0);
  end;
  
***********************************

  当你不需要让用户按Alt+Enter、Ctrl+Alt+Del、Ctrl+Esc等功能键的时候加入以下代码:
Var
temp:integer;
begin
SystemParametersInfo(Spi_screensaverrunning,1,@temp,0);
end;
  当你要恢复功能键时用以下代码:
Var
Temp:integer;
begin
SystemParametersInfo(spi_screensaverrunning,0,@temp,0);
end;
 
Ford:做大梦吧你,讨论过千百次的问题了。

“WINDOWS NT或2000下拦截系统键,如CTRL+ALT+DEL”?你的程序一旦出错用户非去喝农药不可。
 
我不是说技术上不可实现,而是从你的角度说你不可以这么做!
 
做做我想也没问题,只是这个话题的确讨论了许多次了。
 
可以实现的
不过要写驱动程序
并且驱动程序只有管理员才可以安装
所以并不爽
 
可以用消息截获的方法去实现
 
你要用到项目上迟早被用户或老板打死
 
就是,一拦截ctrl+alt+del那么如果程序有问题,那么用户只有关机 了
 
; Ah!刚离开一会儿,就有一帮朋友给了回复!
首先感谢程云的热情,不过遗憾的告诉你,我第一次想到的也是这种办法,在WIN95/98
下很成功,但NT/2000下跟没写一样,根本不好使!
至于可行性和他的后果,我自然很清楚,顺便说一下,我用在一个保护程序中,拦
截系统键,然后定义自己的热键。
我想和大家探讨他的技术细节,拦截消息的办法我也试过,WM_KEYDOWN、WM_KEYUP
WM_SYSKEYDOWN、WM_SYSKEYUP,还有其他一些,记不太清了,都没有成功;写驱动程序
的办法到是挺感兴趣!至于管理员吗——Is me!;也有人说用HOOK,我还需要研究一下。
小弟涉足系统编程不久,望各位大侠不吝赐教!——200分呐*^_~&!
 
接受答案了.
 

Similar threads

后退
顶部