请问谁能给一个application.onidle事件应用的例子; 
要求在程序空闲1分钟后弹出一个信息框;

解决方案 »

  1.   

    你的说明实际上不正确,这个空闲通常用于干某些长时间消耗CPU资源的程序用的,一般可以把后台代码放在这个事件里进行处理。
    一般你即使不操作你的这个程序了,你的程序也不会连续收到onidle事件,一定夹杂其他类型的事件你的要求其实可以描述为,如果没有人操作你的程序超过1分钟,就弹出一个消息框,这样的话,就比较容易处理了。
    定义一个计时器timer1,定义一个空闲开始时间变量dtStartIdle,在Application.OnMessage里如下写
      if ((((Msg.message >=WM_NCMOUSEMOVE) and (Msg.message <=WM_NCXBUTTONDBLCLK)) or
        ((Msg.message >=WM_KEYFIRST) and (Msg.message <=WM_KEYLAST)) or
        ((Msg.message >=WM_MOUSEFIRST) and (Msg.message <=WM_MOUSELAST))) and
        Timer1.Enabled) then
      begin
        dtStartIdle:= Now;
      end;然后timer1计时器事件里这样写
      if Int(SecondSpan(Now, dtStartIdle)) >= 60 then
      begin
        timer1.Enabled := False;
        //弹出消息框等,你要做的1分钟空闲后要做的事情
      end;
      

  2.   

    谢谢回复!
    能说说onidle事件用处及原理吗?