可以在application.onmessage事件中去截取所有来自键盘消息和来自鼠标消息,因为onmessage事件是截取应用消息队列的消息,然后,设定timer就可以了

解决方案 »

  1.   

    为Application.OnMessage事件建立一个句柄,检测中断屏幕保护的条件是否满足。
    procedure Detect(var Msg:TMsg;var Handled:boolean);
    在implementation中加入以下代码:
    procedure Detect(var Msg:TMsg;var Handled:boolean);
    Var
    Done:boolean;
    begin
    Done:=false;
    if (Msg.message=WM_KEYDOWN or
    Msg.message=WM_MOUSEMOVE) then
    done:=true;
    if done then
    begin
    close;
    end;
    end;
    ---- 在为窗口的OnShow事件加上处理函数。在函数中加上以下代码: 
    procedure FormShow(Sender: TObject);
    begin
    Application.OnMessage:=Detect;
    // ShowCursor(false);
    end;
      

  2.   

    上面这段程序在
    if (Msg.message=WM_KEYDOWN or Msg.message=WM_MOUSEMOVE) then
    处提示错误[Error] Unit1.pas(30): Incompatible types,不知为何,还请大家帮帮忙!
      

  3.   

    if (Msg.message = WM_KEYDOWN) or (Msg.message = WM_MOUSEMOVE) then
      done:= True;我的方法
    var
      Form1: TForm1;
      Flag: Integer;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
      Flag:= 0;
    end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      Flag:= 0;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Inc(Flag,200);
      if Flag>=1000 then
        Close;
    end;