2015-08-21 107 views
1

我知道我可以用C WINAPI庫如下得到用戶的空閒時間:多平臺的方式來獲取用戶的空閒時間

LASTINPUTINFO lii = {sizeof(LASTINPUTINFO), 0}; 
GetLastInputInfo(&lii); //error handling ommitted, not the point here 
int CurIdleTime = (getTickCount() - (lii.dwTime))/1000; 

也可以做到在UNIX系統中作爲top命令顯示用戶空閒時間正確。

有沒有一種簡單的多平臺方式來獲取用戶空閒時間在C?如果沒有,哪些庫可以幫助我做到這一點,以便不依賴操作系統?

回答

1

標準C具有time.h,其中有功能timedifftime。這些可用於通過存儲事件之間的先前值來計算用戶輸入之間的時間。

這裏是一個例子。 (錯誤檢查已爲簡潔,刪除)

void on_event() { 
    static time_t old = 0; 
    time_t new = time(NULL); 
    if (old != 0) { 
     double diff = difftime(new, old); 
     if (diff != 0) 
      printf("%g seconds idle\n", diff); 
    } 
    old = new; 
} 

卻越來越事件需要特定平臺的代碼,有有最不同的圖書館,如果不是全部,那已經完成。 GTK+SDL是C的流行庫,具有不同的用途。有使用Tk with C的方法,並有各種跨平臺C++ libraries。注意一些關於alreadyexist的C GUI庫的問題也許會有幫助。

+0

不回答這個問題,因爲它只提供一種獲取用戶*輸入*空閒時間的方法,而不是他是否已經移動鼠標/降低音量/操作系統可以處理的任何其他輸入 – Magix

+0

@MagixKiller查看它這個例子試圖展示的東西並不明顯,它已經被希望更有用的東西取代。 – kdhp

+0

問題依然存在,當多平臺方式觸發事件時,如何讓操作系統調用* on_event()*?這也是問題的一部分,無論如何,謝謝你的回答 – Magix