Auto Close Application(100分)

  • 主题发起人 主题发起人 sandal
  • 开始时间 开始时间
S

sandal

Unregistered / Unconfirmed
GUEST, unregistred user!
如何實現: 在規定時間內如果用戶一直不操作程式, 程式會關閉打開的數據庫, 並自動
關閉程式. (與屏保正好相反,屏保是用戶在規定時間內不動windows便啟動屏保程式.)
 
在PB中有个IDLE可以调用,在Delphi中可以做个定时器Timer,定时触发就记下当前的
鼠标位置及键盘状态,等下次触发,比较一下……
 
能否說詳細點? 比如安全關閉數據庫, 鍵盤狀態用什麼han數
 
可以用一个时钟,记录呆机的时间,如果时间超过了规定的时间,就断开数据库连接,
关闭应用程序。
另:
记录键盘事件可以用keypress事件
if (keypress) then 清空记录时间
 
待機時間如何計算? 有這個函數嗎?
 
i:=gettickcount;
//---------
待机
-----------//
j:=gettickcount;
time:=(j-i)/1000+'秒';
行吗
 
如果是全局的话,利用一下键盘和鼠标的Hook,在Hook里做计数,每秒计一次,到时就可以关闭
啦!
 
hook 怎樣使用呀? 請詳細說說, 謝謝
 
自己设一个Timer吗。使用Delphi的Timer组件就可以。
 
大俠們, 謝謝你們的建議, 可否提供一點參考代碼? 比如hook如何使用
 
可以用windows 的消息来做,等我找到我再贴上来
 
我觉得用TIMER就可以了,使用一个全局时间变量,一旦有事件,就将变量置为零,重
新计时,而TIMER一直监控该变量,达到规定值后起用断开事件!
 
我们就采用屏保的原理来实现
拦截送给form的WM_SYSCOMMAND 窗口消息,当WM_SYSCOMMAND 的cmdtype 字段下$FF0进行AND
运算的结果等于SC_SCREENSAVE时处理你想做的东西
procedure Tform1.WMsyscommand(var Msg:TWMSyscommand);
begin
if (msg.cmdtype and $fffo)=SC_SRCEENSAVE then
begin
msg.result:=0;//禁止屏保
//处理自已的东西
end
else
inherited;
end;

如果屏保没有打开的话,那只有。。。。
我正在考虑
 
在Application.OnIdle里计时,如果满足条件就关闭程序。
 
在Application.OnIdle里计时 : 能否寫點代碼啟發啟發, 多謝了!
 
连续5秒内无任何鼠标键盘操作则退出程序:
procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
var Done: Boolean);
begin
Timer1.Enabled := False;
Timer1.Interval := 5000;
Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Close;
end;
 
多人接受答案了。
 

Similar threads

后退
顶部