截获消息 ,wm_syscommand,关闭程序的wparam是,sc_close;

解决方案 »

  1.   

    这很简单的,用api中的systemparametersinfo就行了
     systemparametersinfo(97,1,1,1)就行了
      

  2.   

    何必那么复杂,只要在设计时 把alt+f4的key设为0就可以了,具体的我不大记得了
    很短的,如果你要, mailto :[email protected]来要把,
      

  3.   

    redlegend_126_com(redlegend) 可以说清楚点吗?因为我在FORMCREATE中加入你写的这个API函数,运行时提示错误.
      

  4.   

    我给你个提示吧,不用API,我们用Delphi的Pascal解决。
    我们在KeyDown事件中(可以是窗体的,也可以是控件的,看你的需要),在这个keydown事件中有一个参数key,是Word值,也就是Virtual_key值。比如,方向键的Virtual_key值就是vk_up。我们可以用判断语句来解决,if key=vk_up then 。大致的思路就是这样,细节方面你可以查delphi的帮助,里面写的很详细。多看delphi帮助吧,这样子进步的才会快。
      今天是大年三十,祝你新春快乐!
      

  5.   

    ok!
    spi_screensaverrunning=97
    systemparametersinfo(spi_screensaverrunning,true,@temp,0)
      

  6.   

    可能是要在uses中添加 shellapi ,你加入就可以了!
      

  7.   

    我已经USES了SHELLAPI,还是不行.它提示:括号中的最后一个值错误
      

  8.   

    首先重载窗体的WMSysCommand消息:
    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;消息过程代码如下:
    procedure WMSysCommand(var Message: TWMSysCommand);
    begin
      if Message.CmdType <> SC_CLOSE then
        Inherited;
    end;这样的结果是,无法使用Alt+F4关闭窗口,也无法使用窗体的X关闭按纽。
    不过可以使用Form.Close关闭窗体;
      

  9.   

    var
      Form1: TForm1;
      boCanClose: Boolean; //定义一个全局变量,当允许关闭窗口时才使其值为 Trueimplementation{$R *.DFM}procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if boCanClose <> True then  //如果不为真,这时按 ALT+F4 或点关闭窗口的按钮,窗口不会被关闭
        CanClose := False;
    end;
      

  10.   

    你这样做就可以了:
     var
       ppp:integer;
     begin
       systemparametersinfo(spi_screensaverruning,1,@ppp,0);
     end;
     恢复用
      systemparametersinfo(spi_screensaverruning,0,@ppp,0);
    给分吧
      

  11.   

    to: redlegend_126_com(redlegend) 
    我在delphi的帮助里找到:
    SPI_SCREENSAVERRUNNING Windows 95 only: Used internally; applications should not use this flag.我在windows2000 professional里试过,确实是不行的,提示“句柄错误”