アイドル時間を取得          <TOP>


アイドル時間を取得します。

GetTickCount システムが起動してからの経過時間を取得

GetLastInputInfo 最後に発生した入力イベントの時刻を取得

 

例では、カーソルの動きを関知して時間をリセットしています。

 

'================================================================
'= アイドル時間を取得

'= (GetLastInputInfo.bas)

'================================================================
#include "Windows.bi"

Type LASTINPUTINFO
   cbSize As Long
   dwTime As Long
End Type

' システムが起動してからの経過時間を取得
Declare Function Api_GetTickCount& Lib "Kernel32" Alias "GetTickCount" ()

' 最後に発生した入力イベントの時刻を取得
Declare Function Api_GetLastInputInfo& Lib "user32" Alias "GetLastInputInfo" (plii As Any)

Var Shared Timer1 As Object
Var Shared Text1 As Object
Var Shared Button1 As Object

Timer1.Attach GetDlgItem("Timer1")
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

Var Shared Flg As Integer

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
   Timer1.SetInterval 10
   Timer1.Enable -1
   Text1.SetWindowText "アイドル時間(秒)"

   Button1.SetWindowText "Stop"
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Flg = Not Flg

    Timer1.Enable Flg
   
    Select Case Flg
        Case -1
            Button1.SetWindowText "Stop"
        Case 0
            Button1.SetWindowText "Start"
    End Select
End Sub

'================================================================
'=
'================================================================
Declare Sub Timer1_Timer edecl ()
Sub Timer1_Timer()
    Var lii As LASTINPUTINFO
    Var Ret As Long

    lii.cbSize = Len(lii)
    Ret = Api_GetLastInputInfo(lii)
   
    Text1.SetWindowText "アイドル時間(秒)" & Chr$(13, 10) & Str$((Api_GetTickCount() - lii.dwTime) / 1000)
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_QueryClose edecl ()
Sub MainForm_QueryClose()
   Timer1.Enable 0
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End