0

私のアプリケーションは、PC がロックする前に警告を発するはずです。x 秒に設定されたタイマーを使用します (x = 非アクティブ状態でコンピューターがロックされるまでの時間)。次のコードを使用して、マウスとキーボードのアクティビティを検出します。

    Private Declare Function GetLastInputInfo Lib "user32.dll" (ByRef inputStructure As inputInfo) As Boolean
Private Structure inputInfo
    Dim structSize As Int32
    Dim tickCount As Int32
End Structure

Private info As inputInfo
Dim lastTick As Int32
Dim firsttick As Int32


   Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
    'The size of the structure for the API call.
    info.structSize = Len(info)
    '
    'Call the API.
    GetLastInputInfo(info)
    '
    'Compare the tickcount values to determine if activity has occurred or not.
    If firstTick <> info.tickCount Then
        firsttick = info.tickCount
        count = 15
        Me.WindowState = FormWindowState.Minimized
        Me.Visible = False
    End If

End Sub

カウントは、1 秒間隔のタイマー 1 によって決定されます。ユーザーがキーボードまたはマウスを操作すると、カウントは x 秒にリセットされます (この例では、テスト目的で 15 秒です。アプリケーションをテストするたびに実際の時間を待つのは面倒です)。上記のすべては、ビデオの再生について考えるまで、完全に機能しました。気づいていないかもしれませんが、YouTube や WMP などでビデオを再生すると、PC がロック/スリープ状態にならなくなります。

私の質問は簡単です...ビデオが再生されているかどうかを検出し、カウントをxにリセットするにはどうすればよいですか。さらに良い質問は、ユーザー アクティビティをカウントしたり検出したりする必要がないように、コンピューターがロックされるまでの時間をどのように検出できるかということです。

4

0 に答える 0