mboost-dp1
Hvordan læser man "System idle time" igennem VB.net?
- Forside
- ⟨
- Forum
- ⟨
- Programmering
Jeg er begyndt at rode lidt med VB.net, og skal i et lille program finde ud af hvor længe maskinen har været "inaktiv". Altså ligesom når windows detecter at ens maskine ikke har været brugt i fx 5 minutter, og så sætter screensaveren igang (hvad man har en aktiveret).
Den Idle tid må man da kunne læse vha. et API kald eller sådan noget?
Anyone?
Gerne kode eksempler. :)
Den Idle tid må man da kunne læse vha. et API kald eller sådan noget?
Anyone?
Gerne kode eksempler. :)
#2:
Visual Basic koden ligger her, har ikke prøvet det - men vil tro at hvis man skal bruge det i VB.NEET kan man forholdsvis let omskrive det;
http://www.freevbcode.com/ShowCode.Asp?ID=1610
Visual Basic koden ligger her, har ikke prøvet det - men vil tro at hvis man skal bruge det i VB.NEET kan man forholdsvis let omskrive det;
http://www.freevbcode.com/ShowCode.Asp?ID=1610
Imports System.Data.OleDbPublic Class MainForm Inherits System.Windows.Forms.Form ' Api kald (idle counter) Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer ' konstanter Const SYSTEM_IDLE_SEC As Integer = 30 ' seconds ' private variabler Private mboo_MouseIdle As Boolean = False Private mboo_KeyIdle As Boolean = False Private mboo_SystemIdle As Boolean = False Private mint_IdleSec As Integer = 0 Private mint_LastIdleSec As Integer = 0 Private mint_OldX As Integer = 0 Private mint_OldY As Integer = 0 ' funktion til at checke om der er blevet trykket på en tast globalt på systemet Public Function KeyCheck() As Boolean Dim i As Integer For i = 0 To 255 If (GetAsyncKeyState(i) And &H8001) 0 Then Return True Exit Function End If Next i Return False End Function ' dette event køres for hvert idle count check (1 tick pr sekund) Private Sub IdleTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IdleTimer.Tick ' check på at musen har bevæget sig If mint_OldY = Cursor.Position.Y And mint_OldX = Cursor.Position.X Then mboo_MouseIdle = True Else mboo_MouseIdle = False End If ' debug ProcessLabel1.Text = mboo_MouseIdle.ToString ' check om der er blevet trykket på en tast If Not KeyCheck() Then mboo_KeyIdle = True Else mboo_KeyIdle = False End If ' debug ProcessLabel2.Text = mboo_KeyIdle.ToString ' hvis både musen og tastaturet ikke er blevet aktiveret så tæl en sekund tæller op. Ellers nulstil den If mboo_MouseIdle = True And mboo_KeyIdle = True Then mint_IdleSec += 1 Else mint_IdleSec = 0 End If ' hvis der er gået (SYSTEM_IDLE_SEC) antal sekunder er systemet idle. If mint_IdleSec >= SYSTEM_IDLE_SEC Then mboo_SystemIdle = True Else mint_LastIdleSec = mint_IdleSec mboo_SystemIdle = False End If ' debug ProcessLabel3.Text = mboo_SystemIdle.ToString Label6.Text = mint_IdleSec.ToString Label4.Text = Cursor.Position.X.ToString Label5.Text = Cursor.Position.Y.ToString ' set musens gamle position til når der skal checkes igen mint_OldY = Cursor.Position.Y mint_OldX = Cursor.Position.X End SubEnd Class
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.