none
請問如果不置換自己寫的螢幕保護程式,能額外收到作業系統多久時間無動作的訊息嗎? RRS feed

  • 問題

  •  

    as Title

     

    有點繞舌,請原諒我文筆不好。

     

    問題詳述如下,就是 User 希望某段時間不操作平台程式的話,

     

    就自動執行平台簽退或其它動作一類的,(這邊的平台是指我們開發的程式,不是作業系統)

     

    那理所當然會想到藉由 Windows 本身的功能來達成,也就是螢幕保護程式

     

    但如果說在不置換前端 User 機器的螢幕保護的前置條件下,有沒有辦法

     

    獲知 Window 的訊息,得知螢幕保護被觸發了?  (會不會有點難懂?)

     

    還是說只能置換自身開發的螢幕保護程式來通知。

    2007年6月27日 上午 06:26

所有回覆

  • 在你的應用程式中放一個全域的計時器就好了吧。
    2007年6月27日 上午 06:40
    版主
  •  

    我懂小朱大大的意思,的確放一個全域計數器即可~~

     

    問題在於,要另外判斷鍵盤、滑鼠有沒有動作有點複雜性 (除非再掛個 Hook)

     

    且有時候 User 不一定指定多久的時間不動作,也許 10 分鐘、20 分鐘....

     

    也許是我太懶了,想說如果作業系統能提供類似的功能,就用它的。

     

    因為我是假設,螢幕保護程式也是註冊某個事件或.....等時間到之後再通知它啟動。

     

    如果是這樣的話,或許我的想法可行,但看了一下相關螢幕保護的寫法。

     

    好像非得置換成自行開發的螢幕保護程式才行,所以才會提出這樣的問題請教大家。

     

    2007年6月27日 上午 08:28
  • 我能夠想到的方法,就是實作一個自己的 Windows Message Dispatcher,模擬 MFC 的 OnIdle 方法。

    在這個 Dispatcher 中,判斷目前有沒有 WM 訊息,如果沒有,表示應用程式處於 Idle 狀態,這時啟動計時器,

    若捕捉到 WM 訊息時,計時器就重新計時,而到了指定動作(例如登出)的時間時,就執行指定動作。

     

    在這個程式中,也必須要濾掉啟動計時器的訊息(例如 WM_TIMER)。

    2007年6月27日 上午 09:01
    版主
  •  

     OnIdle 能用在這啊~~~

     

    我試試看了~~

     

    感謝你的回覆

     

    2007年6月27日 上午 09:29