Windows をロックし、アンロックまでの時間を求める

f:id:dechnostick:20140811025154p:plain

Windows をロックする

    <DllImport("user32.dll", SetLastError:=True)> _
    Private Shared Function LockWorkStation() As <MarshalAs(UnmanagedType.Bool)> Boolean
    End Function

ロック、アンロックのイベントを受け取れるようにする

        Dim handler As SessionSwitchEventHandler = New SessionSwitchEventHandler(AddressOf SystemEvents_SessionSwitch)
        AddHandler SystemEvents.SessionSwitch, handler

イベントを受け取る

    Private Sub SystemEvents_SessionSwitch(ByVal sender As System.Object, ByVal e As SessionSwitchEventArgs)

        Select Case e.Reason
            Case SessionSwitchReason.SessionLock
                ' ロックされた

            Case SessionSwitchReason.SessionUnlock
                ' アンロックされた

        End Select

ソースはこちら
https://github.com/dechnostick/LockUnlockDuration