在DELPHI7中,如何使用TApplication.OnIdle事件事件?如何设置空闲时间idletimer的长短?在线等

时间:2021-06-05 20:34:51
我想写一个程序,在程序执行后如果长时间没有操作鼠标、键盘等,就自动运行另一任务,DELPHI7教程中介绍了TApplication.OnIdle事件,就是指应用程序在空闲状态时触发,可不知道怎么写脚本?我的说是应用程序处于空闲状态时触发的事件:只要应用程序在规定的时间内没有键盘、鼠标操作,就触发一个事件,执行某一任务,这个事件就是TApplication.OnIdle事件,但我不知道怎么去写这个事件的脚本。

8 个解决方案

#1


TApplication.OnIdle
  当应用程序变为空闲时,OnIdle事件发生。
  使用OnIdle事件,可以写一个应用程序空闲时执行特定处理的事件处理程序。当应用程序不处理代码时,称为应用程序空闲。例如,当应用程序等待来自用户的输入时,应用程序为空闲。
  TIdleEvent类型是OnIdle事件的类型,它指向一个应用程序空闲时运行的方法。TIdleEvent类型有一个布尔型参数Done,默认时该参数为True。若参数Done为True,当OnIdle事件返回时,调用Windows  API  WaitMessage函数。只有在应用程序消息队列中出现一个新消息时,WaitMessage函数才放弃对其他应用程序的控制。参数Done为False时,即使应用程序不忙,也不放弃对其他应用程序的控制。
  当应用程序转移到空闲状态时,只调用一次OnIdle事件。除非参数Done设置为False,否则不连续调用OnIdle事件。将参数Done设置为False的应用程序,将消耗过多的CPU时间,从而影响整个系统性能。
    
    具体的,在Additinal页面,选择组件ApplicationEvents进行研究。^_^

#2


2

#3


这个还没用过呢 要学的太多了

#4


to sxtdxvb(大傻瓜):
   谢谢指点,可我还是不会用啊,怎样触发这个事件啊?如何设置空闲时间?请写一段脚本例子好吗?

#5


procedure TForm1.FormCreate(Sender: TObject);
begin
  PreviewBox1.Align := alClient;
  Application.OnIdle := ApplicationIdle;
  FilterControlList := TStringList.Create;
end;


procedure TForm1.ApplicationIdle(Sender: TObject; var Done: Boolean);
begin
  // Under Delphi 4 and upper better to user Actions to determine
  // enablitity buttons and menus
      ppmPreview.Enabled := True;
end;

#6


学习,学习~~

#7


学习!那么空闲时间在哪里设置呢?

#8


我也在为onidle问题困扰,
我用onidle事件,里面启动计时器,计时器,计到1分钟的时候,会出来想要的窗口,然后在计时器事件中停止计时器,防止跳出多个窗口,可不好使啊,他还是接着跳,而且我有其它操作,鼠标在动,可计时器时间不停,倒底是怎么回事,done参数倒底怎么用?
onidle倒底该怎么用,拜托高手举个好例子好不好,别只是翻译帮助,帮助我也看好几遍了,写的太模糊

#1


TApplication.OnIdle
  当应用程序变为空闲时,OnIdle事件发生。
  使用OnIdle事件,可以写一个应用程序空闲时执行特定处理的事件处理程序。当应用程序不处理代码时,称为应用程序空闲。例如,当应用程序等待来自用户的输入时,应用程序为空闲。
  TIdleEvent类型是OnIdle事件的类型,它指向一个应用程序空闲时运行的方法。TIdleEvent类型有一个布尔型参数Done,默认时该参数为True。若参数Done为True,当OnIdle事件返回时,调用Windows  API  WaitMessage函数。只有在应用程序消息队列中出现一个新消息时,WaitMessage函数才放弃对其他应用程序的控制。参数Done为False时,即使应用程序不忙,也不放弃对其他应用程序的控制。
  当应用程序转移到空闲状态时,只调用一次OnIdle事件。除非参数Done设置为False,否则不连续调用OnIdle事件。将参数Done设置为False的应用程序,将消耗过多的CPU时间,从而影响整个系统性能。
    
    具体的,在Additinal页面,选择组件ApplicationEvents进行研究。^_^

#2


2

#3


这个还没用过呢 要学的太多了

#4


to sxtdxvb(大傻瓜):
   谢谢指点,可我还是不会用啊,怎样触发这个事件啊?如何设置空闲时间?请写一段脚本例子好吗?

#5


procedure TForm1.FormCreate(Sender: TObject);
begin
  PreviewBox1.Align := alClient;
  Application.OnIdle := ApplicationIdle;
  FilterControlList := TStringList.Create;
end;


procedure TForm1.ApplicationIdle(Sender: TObject; var Done: Boolean);
begin
  // Under Delphi 4 and upper better to user Actions to determine
  // enablitity buttons and menus
      ppmPreview.Enabled := True;
end;

#6


学习,学习~~

#7


学习!那么空闲时间在哪里设置呢?

#8


我也在为onidle问题困扰,
我用onidle事件,里面启动计时器,计时器,计到1分钟的时候,会出来想要的窗口,然后在计时器事件中停止计时器,防止跳出多个窗口,可不好使啊,他还是接着跳,而且我有其它操作,鼠标在动,可计时器时间不停,倒底是怎么回事,done参数倒底怎么用?
onidle倒底该怎么用,拜托高手举个好例子好不好,别只是翻译帮助,帮助我也看好几遍了,写的太模糊