Как обнаружить неактивность в VB.NET
Мое приложение должно выдавать предупреждение до блокировки компьютера. Он использует таймер, установленный на 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, который имеет интервал в секунду. Если пользователь взаимодействует с клавиатурой или мышью, счетчик сбрасывается на x секунд (в этом примере это 15 секунд для целей тестирования; я не могу ждать реального времени каждый раз, когда хочу протестировать приложение). Все вышеперечисленное работало отлично, пока я не подумал о воспроизведении видео. В случае, если вы не заметили, воспроизведение видео на YouTube или WMP... и т. Д. Не позволяет компьютеру блокироваться / спать.
У меня простой вопрос... Как определить, воспроизводится ли видео, и сбросить счетчик обратно на x. Еще лучший вопрос: как я могу определить, как долго компьютер блокируется, чтобы мне даже не нужно было подсчитывать или определять активность пользователя?