本來想計算閒置時間 , 不小心又歪樓了 , 變成慣老闆專用的員工殺手級工具 , 混水摸魚盡在眼底阿 ~
主要核心參考自這個老外 感恩
他運用這個 win32 api 函數 GetLastInputInfo
可以計算出滑鼠不動以及鍵盤沒有敲擊的時間
關鍵的 code 我都寫在裡面有空在丟到 github 上 , 差不多就這樣~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| //目前的時間 (有點總數的味道) int currentIdle = 0;
//最後一次的閒置時間 int lastIdle = 0;
//counter 供給每秒遞增判斷 int counter = 0; private void Form1_Load( object sender, EventArgs e ) { timerIdle.Interval = 1000; timerIdle.Tick += TimerIdle_Tick; timerIdle.Start(); }
private void TimerIdle_Tick( object sender, EventArgs e ) { //每秒 counter 遞增供給非閒置時候進行判斷 counter++;
//假設超過 30 秒的話就算是耍廢 var sec = InputTimer.GetInputIdleTime().Seconds; if (sec >= idle) { lastIdle = InputTimer.GetInputIdleTime().Seconds; labelIdle.Text = $"你今日的耍廢時間 : {currentIdle + lastIdle} 秒"; } else { //因為每秒都會計算 , 所以用個 counter 判斷秒數是否小於閒置時間 if (counter >= idle) { //回復操作了把最後一次的時間加上去 currentIdle = currentIdle + lastIdle;
//已經加過了所以設定為 0 lastIdle = 0; counter = 0; } } }
|