私のアプリケーションは、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にリセットするにはどうすればよいですか。さらに良い質問は、ユーザー アクティビティをカウントしたり検出したりする必要がないように、コンピューターがロックされるまでの時間をどのように検出できるかということです。