程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB鍵盤鼠標無舉措調用順序的嘗試

VB鍵盤鼠標無舉措調用順序的嘗試

編輯:VB綜合教程

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

以上所述就是本文的全部內容了,希望大家可以喜歡。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved