uniGUI應用檢測無人操作


在瀏覽器中運行一個uniGUI應用,當超過一定時間,無人操作時,我們想實現自動退出應用,該如何實現呢?

下面是具體的實現方法:

在MainForm中,增加了一個事件OnSessionIdle,當超過一定時間無人操作時,會觸發這個事件,這個時間在哪里設置呢?答案是UniServerModule的AjsxTimeout這個屬性,單位毫秒。

利用上面的原理,我們開始實現一個超過30秒無人操作時,自動退出應用。

1.設置UniServerModule.AjaxTimeout:=30000

2.實現MainForm.OnSessionIdle事件:

在這個事件中,我們顯示一個提示窗口UniIdleForm,當這個窗口不返回mrOK時,關閉應用。

procedure TMainForm.UniFormSessionIdle(Sender: TObject);
begin
  UniIdleForm.ShowModal(
    procedure(Sender: TComponent; AResult:Integer)
    begin
      if AResult <> mrOK then
      begin
        UniSession.Terminate('Your session terminated because it was idle for 30 seconds!');
      end;
    end
  );
end;

3.接下來,看UniIdleForm的實現:

建立一個UniIidleForm,放置一個UniTimer1,設置Interval=5000,即5秒觸發一次。

建立一個私有變量FCnt,初始值設置為6,在UniTimer1的OnTimer事件中,利用FCnt變量,控制計時。當FCnt小等於0時,自動退出窗口並設置返回值為mrCancel。具體的代碼:

procedure TUniIdleForm.UniTimer1Timer(Sender: TObject);
begin
  if FCnt <= 0 then
  begin
    ModalResult := mrCancel;
    Exit;
  end;
  UniLabel1.Caption := 'Session will be terminated in <b>' +
                      IntToStr(FCnt * 5) + '</b> seconds.<br>' +
                      'Please press "Continue" to return to your session.';

  Dec(FCnt);
end;

本文基於官方的例子Session Idle Timeout所寫,具體項目在FMSoft\Framework\uniGUI\Demos\Desktop\Session Idle Timeout目錄。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM