我对windows消息机制还不是太熟悉  请各位赐教 这是用来做一个机房的管理系统的一个模块  需要在无操作N分钟后自动关机

解决方案 »

  1.   

    用个MessageEvent(名字记不住了)捕获全局线程消息吧,然后用
    WM_MouseFirst,WM_MouseLast,WM_KEYFirst,WM_KeyLast判断消息是否在此之间。
      

  2.   

    已经解决了 在此将代码贴出来供大家参阅:
    function SecondsIdle:DWord;
    var
     liInfo:TLastInputInfo;
    begin
     liInfo.cbSize:=Sizeof(TLastInputInfo);
     GetLastInputInfo(liInfo);
     Result:=(GetTickCount-liInfo.dwTime) div 60000;
    end;
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
     Edit1.Text:=inttostr(SecondsIdle);
     if SecondsIdle=iTime then
      begin
       ShutDown;
       ExitWindowsEx((EWX_SHUTDOWN Or EWX_FORCE Or EWX_POWEROFF), $FFFF);
       //ExitWindowsEx(EWX_LOGOFF,0);
      end;
    end;