如何使程序在空闲时候关闭?(50分)

  • 主题发起人 主题发起人 acloudy
  • 开始时间 开始时间
A

acloudy

Unregistered / Unconfirmed
GUEST, unregistred user!
比如使用者五分钟没有任何动作,程序自动退出,如何实现???
 
用application.onidle事件
 
能不能详细说明些,是新手!
 
加一个Ttimer组件,
声明事件:
procedure mymessage(var Msg: TMsg; var Handled: Boolean);
procedure myidle(Sender: TObject; var Done: Boolean);
声明全局变量:
var count:integer;
在tmainformcreate事件中加以下4句:
count:=1;
timer1.enable:=false;
application.OnMessage:=mymessage;
application.OnIdle:=myidle;


procedure tmainform.myidle(Sender: TObject; var Done: Boolean);
begin
timer1.Enabled :=true;
end ;
procedure tmainform.mymessage(var Msg: TMsg; var Handled: Boolean);
begin
if (msg.message= wm_mousemove) or (msg.message=WM_KEYDOWN) then
begin
timer1.Enabled :=false;
if count>=300 then
begin
.....
end
count:=0;
end ;
end;
procedure Tmainform.Timer1Timer(Sender: TObject);
begin
count:=COUNT+1;
end;
 
是不是有些反了?我是要求用户几分钟内没有动作,程序自动退出呀!
不过还是有思路,谢谢!
 
接受答案了.
 
还是不是很理想!w12345678可以再说说吗?
 
怎么个不理想法?
 
我这样改了一下,你觉得呢?
procedure tmainform.myidle(Sender: TObject; var Done: Boolean);
begin
timer1.Enabled :=true;
if count>=300 then
begin
application.terminate;
end

end
 
可以呀,你可以修改消息的判断
if (msg.message= wm_mousemove) or (msg.message=WM_KEYDOWN) then
符合你自己的要求
 
后退
顶部