有无数个人问过,没有人有满意答案的:Ctrl+Alt+Del还是用vxd吧

解决方案 »

  1.   

    需要自己编写一个HOOK,并以DLL的形式由系统加载,只有这样才能优先于系统得到按键消息,并成功拦截。
    DLL我有一个,怎么编写建议你看看《程序员》12期,以及之前的文章(关于系统钩子的)。
      

  2.   

    procedure TForm1.FormCreate(Sender: TObject);   var tmp,Flag :integer; 
    begin
      tmp := 0;
    Flag := 1;
      //屏蔽 Alt-Tab 
      SystemParametersInfo( SPI_SETFASTTA-SKSWITCH, Flag, @tmp, 0); 
      //屏蔽 Ctrl-Alt-Del
      SystemParametersInfo( SPI_SCREENSAVERRU-NNING,Flag, @tmp, 0);   
    end;
      当你要恢复功能键时用以下代码:
    Flag := 0;
    SystemParametersInfo(SPI_SCREENSAVERRU-NNING,Flag,@temp,0);
      

  3.   

    谢谢fei1995(飞砂)
    我试过,这样子在98下没问题,
    NT下不行
      

  4.   

    只有一种方法,系统钩子!必须是DLL!!否则别无它法!!!
      

  5.   

    to fei1995(飞砂):NT4和WIN2K都不行
      

  6.   

    看来dephi版做系统就是不如vc,这个问题vc版easy哈哈
      

  7.   

    to likevclinux(流浪的小狗):大虾,你能把VC的Code贴出来吗,谢谢
      

  8.   

    你到vchelp.net上看吧!那里比我讲的清楚code也有!
      

  9.   

    to jdxjf(生活象拉磨,我就是那拉磨的驴):
    谢谢,我试试看
      

  10.   

    //我也是这样的:
    Var
    temp:integer;
    begin
    SystemParametersInfo(Spi_screensaverrunning,1,@temp,0);
    end;
      当你要恢复功能键时用以下代码:
    Var
    Temp:integer;
    begin
    SystemParametersInfo(spi_screensaverrunning,0,@temp,0);
    end;
      

  11.   

    to man8888_asm(北京男人) :
    谢谢,我也这样试过,不过在酒吧下好用
    在NT下不好用
      

  12.   

    用低层键盘HOOK可以,但是DELPHI不支持这个类型的HOOK,可能可以自己写,但是我没有作过实验
      

  13.   

    先要在2K下对系统进行授权,
    BOOL AdjustTokenPrivileges(
      HANDLE TokenHandle,  // handle to token that contains privileges
      BOOL DisableAllPrivileges,
                           // flag for disabling all privileges
      PTOKEN_PRIVILEGES NewState,
                           // pointer to new privilege information
      DWORD BufferLength,  // size, in bytes, of the PreviousState buffer
      PTOKEN_PRIVILEGES PreviousState,
                           // receives original state of changed 
                           // privileges
      PDWORD ReturnLength  // receives required size of the 
                           // PreviousState buffer
    );
     
      

  14.   

    to geliang(回来的光芒):
       先授权
      然后调用SystemParametersInfo(Spi_screensaverrunning,1,@temp,0)吗
      

  15.   

      当你不需要让用户按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; 
      

  16.   

    to kyo_wang(踏雪无痕) :
     谢谢,不过上面的用法在98下可以,在NT下不行,
    我要的是在NT下屏蔽这些按键
      

  17.   

    看看《程序员》第12期或在CSDN上下载该文章,写成DLL,进入系统级,可解决NT/WIN2000下你所提问题。
    祝你好运!
      

  18.   

    某已找到根本的解决法了,编*.drv驱动程序,成功实现屏蔽任何按键,包括CTRL+ALT+DEL,在NT/2K/XP下调试成功!!!!!