GetLastInputInfo計時用戶離開電腦及軟件在指定時間鎖定等(轉)


 1 /************************************************************************/
 2 /* 說明:
 3 調用函數GetLastInputInfo()以后, 結構成員lpi.dwTime 中的值並非上次輸入事件
 4 發生以后的毫秒數。而是上次輸入事件發生時的系統運行時間。相當於上次輸入事件
 5 發生時執行了lpi.dwTime=::GetTickCount()。
 6 ::GetTickCount()-lpi.dwTime才是上次輸入事件發生以后的毫秒數。
 7 */
 8 /************************************************************************/
 9 //注意:windows2000以上系統才支持函數GetLastInputInfo()因此有可能需要在StdAfx.h中加上如下語句:
10 #define _WIN32_WINNT 0x0500
11 //或者:
12 #ifdef _WIN32_WINNT 
13 #undef _WIN32_WINNT 
14 #endif 
15 #define _WIN32_WINNT 0x0500 
16 
17 //首先定義一個計時器計時事件的定義
18 #define  GETLASTINPUTINFO  109
19 
20 //然后寫一個Time計時器(具體計時器的生成步驟就不在敘述)
21 
22 //1、在程序初始化的時候調用
23 m_uGetLastInputInfo = SetTimer(GETLASTINPUTINFO, 500, NULL);//設置獲取鍵盤和鼠標處於空閑狀態的時間的計時器
24 
25 
26 //2、處理函數
27 void CNetAppSoftDlg::OnTimer(UINT nIDEvent)
28 {
29     LASTINPUTINFO lpi;
30     DWORD dwTime = 0;
31 
32     switch(nIDEvent)
33     {
34     case GETLASTINPUTINFO://zhouzx 獲取鍵盤和鼠標處於空閑狀態的時間
35 
36         lpi.cbSize = sizeof(lpi);
37         GetLastInputInfo(&lpi);//關於此windows API接口的介紹,參見同文件夾下的文檔
38         dwTime = ::GetTickCount()-lpi.dwTime;
39 
40         if (dwTime >= 30000)//30秒
41         {
42             if (m_uGetLastInputInfo)
43             {
44                 KillTimer(GETLASTINPUTINFO);
45             }
46             OnBnClickedButtonLock();
47         }
48         break;
49     default:
50         break;
51     }
52     CDialog::OnTimer(nIDEvent);
53 }
54 
55 //3、在軟件解鎖后的地方重新開始新的計時
56 m_uGetLastInputInfo = SetTimer(GETLASTINPUTINFO, 500, NULL);
57 
58 //4、在推出軟件的時候,如果計時器沒有停止,要關閉計時器
59 if (m_uGetLastInputInfo)
60 {
61     //結束獲取鍵盤和鼠標處於空閑狀態的時間定時器
62     KillTimer(GETLASTINPUTINFO);
63 }

轉載:http://www.cnblogs.com/ziwuge/archive/2011/12/22/2296559.html

轉載:http://blog.csdn.net/yockie/article/details/7770599


免責聲明!

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



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