VB鍵盤鼠標無舉措挪用法式的測驗考試。本站提示廣大學習愛好者:(VB鍵盤鼠標無舉措挪用法式的測驗考試)文章只能為提供參考,不一定能成為您想要的結果。以下是VB鍵盤鼠標無舉措挪用法式的測驗考試正文
我想要完成的功效是,當鍵盤無輸出、鼠標無挪動或點擊舉措時挪用法式。起首想到的是用鉤子HOOK來獲得鍵盤或許鼠標的舉措,假如無舉措時挪用法式。我測驗考試的成果是HOOK來HOOK去老是有成績。
後來想到Windows的屏幕掩護法式就是當鍵盤鼠標無舉措時進入屏幕掩護的,因而轉變思緒,想把法式做成如許的情勢,鍵盤鼠標無舉措,體系進入屏幕掩護,然後檢測體系能否運轉屏幕掩護法式,假如運轉的話則挪用法式。這類方法就是以屏幕掩護法式作為中介,把檢測鍵盤鼠標舉措的任務交給屏幕掩護法式來完成了。SystemParametersInfo可以完成獲得屏幕掩護信息的函數。參考代碼以下:
'API挪用與經常使用界說: Private Declare Function SystemParametersInfo _ Lib "user32" _ Alias "SystemParametersInfoA" _ (ByVal uiAction As Long, _ ByVal uiParam As Long, _ pvParam As Any, _ ByVal fWInIni As Long) As Boolean Private Const SPI_GETSCREENSAVEACTIVE As Long = &H10 '屏保能否啟用的常量 Private Const SPI_GETSCREENSAVERRUNNING As Long = &H72 '屏保能否運轉的常量 Private Sub Timer1_Timer() Dim bRunning As Boolean '屏保能否運轉的變量,固然你可以界說全局變量 SystemParametersInfo SPI_GETSCREENSAVERRUNNING, 0, bRunning, False '挪用API,bRunning前往屏保運轉狀況 Debug.Print Time; "屏保運轉="; bRunning '演示:打印屏保能否運轉的信息 End Sub '別的,檢查屏保能否啟用,也能夠用上面辦法: SystemParametersInfo SPI_GETSCREENSAVEACTIVE, 0, bActive, False 'bActive為前往值(邏輯型)
可是不曉得為何我在WIN7下調試照樣有成績,提醒SystemParametersInfo SPI_GETSCREENSAVERRUNNING, 0, bRunning, False
中的bRunning類型毛病,只能作罷。
最初來講一下終究完成的計劃是應用GetLastInputInfo函數獲得體系的余暇時光,參考代碼以下:
Option Explicit Private Declare Function GetLastInputInfo Lib "user32" (plii As LASTINPUTINFO) As Boolean Private Declare Function GetTickCount Lib "kernel32" () As Long Private Type LASTINPUTINFO cbSize As Long dwTime As Long End Type Private Sub Form_Load() Timer1.Interval = 1000 End Sub Private Sub Timer1_Timer() Dim lii As LASTINPUTINFO lii.cbSize = Len(lii) If GetLastInputInfo(lii) Then If (GetTickCount - lii.dwTime) / 60000 >= 15 Then Call MsgBox("因為本機15分鐘沒有操作,假如3分鐘後沒有反響,體系將強迫關機", vbYesNo + vbExclamation + vbDefaultButton2, "提醒") End If End If End Sub
以上所述就是本文的全體內容了,願望年夜家可以或許愛好。