SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,nil,1);
可屏蔽CTRL+ALT+DEL。

解决方案 »

  1.   

    olo说的有道理,那是一个模拟屏幕保护程序状态的AP!
      

  2.   

    olo说得对,这个API在DELPHI中也可实现。
    我曾用它写了一个“礼物”(小恶作剧)
      

  3.   

    对不起,应该是:
    SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,nil,0);ALT+TAB,WIN键可考虑写一个键盘钩子,另外CTRL+ESC也得屏蔽吧。
      

  4.   

    用SystemParametersInfo函数可屏蔽你所说的所有键, 不用再去找别的方法了!
      

  5.   

    请问olo 参数nil 什么意思?
      

  6.   

    请问czhp如何屏蔽其他键。
    其参数是什么?如何用?谢谢您!
      

  7.   

    请问olo 为什么我用SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,NULL,0);可以。但参数改为SPI_SETSWITCHTASKDISABLE以屏蔽Enables or disables ALT+TAB and ALT+ESC task switching却出现 C2065: 'SPI_SETSWITCHTASKDISABLE' : undeclared identifier
    请问为什么!
      

  8.   

    好象还要考虑ALT+F4的问题。因为ALT+F4可以关闭任何程序。
      

  9.   

    SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,TRUE,NULL,0);
      

  10.   

    各位高手、朋友,ALT+F4还没解决呢?
    我试过上述方法并为屏蔽这个组合!
      

  11.   

    Alt+F4可另做个程序:首先声明变量为B:Boolena,代码如下:
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (ssAlt in shift) and (Key=VK_F4) then
      begin
        B:=False;
        FormCloseQuery(sender,B);
      end;
    end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if B=False then
        CanClose:=False
      else
        CanClose:=True;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      B:=True;
      Close;
    end;
      

  12.   

    For alt+tab:
    HKEY_CURRENT_USER\Control Panel and Desktop and Coolswitch 0
    need reboot.
    For CTRL+ALT+DEL,I don't think there is anyway to disable it(UNDER NT),it's part of the security policy for NT,no way!
      

  13.   

    我试了试SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,NULL,0),
    始终不行,OS 为WIN98,编译器用BC5.02 和 VC6。
    再请问一下,如果用钩子截获ALT+CTRL+DEL 消息,
    代码该如何写。请多多指教。
      

  14.   

    在WIN9X很简单,但是在WINDOWS NT下就比较难:-(。谁有办法在WINDOWS NT下也锁住,请EMAIL告知。非常感谢! mail to: [email protected]
      

  15.   

    //true: 程序屏蔽任何功能键,开始菜单,任务栏等
    //false: 恢复
    void ExclusiveAllWindows(bool ExAw)
     {
          HWND hWnd = FindWindow("Shell_traywnd", "");
          if(hWnd)
           {
             if(ExAw)
              {
                ShowWindow(hWnd, SW_HIDE);
                SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_HIDEWINDOW);
              }
             else
              {
                ShowWindow(hWnd, SW_SHOW);
                SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW);
              }
           }      SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, !ExAw, "", 0);
          SystemParametersInfo(SPI_SCREENSAVERRUNNING,  ExAw,  "", 0);
     }
      

  16.   

    SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, NULL, 0);
    this function can not work normal under win97, it can work
    under win98.
      

  17.   

    Alt+F4可以用消息处理去拦住,在WM_SYSCOMMAND里当发现wParam为SC_CLOSE时直接return掉,不让它去调DefWindowProc。
      

  18.   

    我在C++ Builder里也有与此相同的贴子,至今无满意答案。关键是——操作系统环境应是NT而不是Win9x,Win9x下就太小儿科了,简直不用问!NT简直太难屏蔽掉Ctrl+Esc和左右两个Win键及其他系统键了————
    ——更别说Ctrl+Alt+Del组合键!!!有大虾说可用Hook完成,请给出例程,必须通过NT环境检验。若此,他可以受到几乎所有人的敬仰!因为这不是小问题!!!
      

  19.   

    在任何平台:使用RegisterHotKey(),然后响应WM_HOTKEY就可以完成。具体例子可以在本站寻找,也可以直接向本人要。
      

  20.   

    Eros:请千万告知例程,或在哪里找得到!
    直接E_mail给我好吗?  [email protected]    
      

  21.   

    Eros :     请讲一下你的RegisterHotKey(),然后响应WM_HOTKEY就可以完成的具体原理好吗?[email protected]