設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 2841|回復: 1
打印 上一主題 下一主題

[API] 獲取系統(tǒng)閑置了多久(用戶多久沒有操作)的源碼

[復制鏈接]

點擊這里給我發(fā)消息

跳轉到指定樓層
1#
發(fā)表于 2020-3-15 23:20:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
獲取系統(tǒng)閑置了多久(用戶多久沒有操作)的源碼我們有時需要在系統(tǒng)閑置時,去進行一些操作,如讓系統(tǒng)進行自動備份,讓系統(tǒng)彈出屏幕保護,讓系統(tǒng)播放休息音樂,讓系統(tǒng)自動殺毒 強制自動關機等等。
但如何判斷系統(tǒng)是否處理閑置狀態(tài)呢,一般我們是判斷最近有否輸入或操作。這就需要用到API函數(shù)。完整代碼如下:


窗體函數(shù)代碼:
Option ExplicitPrivate Declare Function GetLastInputInfo Lib "user32" (plii As LASTINPUTINFO) As Boolean  '獲取上一次輸入的相關信息Private Declare Function GetTickCount Lib "kernel32" () As Long'  此函數(shù)的作用是獲得系統(tǒng)運行了多少時間(運行了多久),單位是毫秒'MSDN原文:The GetTickCount function retrieves the number of milliseconds that have elapsed since the system was started. Private Type LASTINPUTINFO    cbSize As Long    dwTime As LongEnd TypeDim lii As LASTINPUTINFOPrivate Sub Form_Load()Timer1.Interval = 1000    lii.cbSize = Len(lii)'    '看API聲明,API里要求這個變量的cbSize保存為這個變量的長度,這樣才可以被API正確操作End SubPrivate Sub Timer1_Timer()   '如果是Access中使用,請改為Form_Timer事件,且設置定時器間隔屬性為1000毫秒--Office中國提醒    If GetLastInputInfo(lii) Then        If (GetTickCount - lii.dwTime) / 60000 >= 15 Then            Shell "shutdown.exe -s -t 180"            Call MsgBox("由于本機15分鐘沒有操作,如果3分鐘后沒有反應,系統(tǒng)將強制關機", vbYesNo + vbExclamation + vbDefaultButton2, "提示")        End If    End IfEnd Sub


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2020-3-16 12:32:09 | 只看該作者
附上“屁股和凳子”的示例:
http://ctxi.cn/thread-95762-1-1.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 06:26 , Processed in 0.140018 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表