DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Windowsの未操作時間の取得

環境/言語:[WinXP VS2005:C#]
分類:[.NET]

連続での質問になってしまいますが、よろしくお願いします。

スクリーンセーバーの"待ち時間"のように、Windows上で操作が行われなかった時間の取得をしたいのです。
とある画面にで、操作がなかったら画面を閉じるとういようなことをしたいと思います。
マウスムーブ、キープレスを設定する方法もあるのですが、標準的なやり方をお教えください。
よろしくお願いします。
■No20115に返信(krpzさんの記事)
> スクリーンセーバーの"待ち時間"のように、Windows上で操作が行われなかった時間の取得をしたいのです。
> とある画面にで、操作がなかったら画面を閉じるとういようなことをしたいと思います。
> マウスムーブ、キープレスを設定する方法もあるのですが、標準的なやり方をお教えください。

.Netにラッパーがあるかどうか知りませんが、
Win32でしたらGetLastInputInfoを使います。

    <DllImport("user32.dll")> _
    Shared Function GetLastInputInfo(ByRef plii As LASTINPUTINFO) As Boolean
    End Function

    <StructLayout(LayoutKind.Sequential)> _
       Structure LASTINPUTINFO
        Public cbSize As Integer
        Public dwTime As Integer
    End Structure

    Public Function GetLastInputTickCount() As Integer
        Dim info As LASTINPUTINFO
        Dim r As Boolean

        info.cbSize = Marshal.SizeOf(info)
        r = Form2.GetLastInputInfo(info)
        If Not r Then Throw New Exception(Marshal.GetLastWin32Error.ToString)

        Return info.dwTime
    End Function

こんな感じで。

DOBON.NET | プログラミング道 | プログラミング掲示板