Bonjour à tous
Est-il possible de connaitre le temps d'inactivité sur un PC, soit pas de déplacement de la souris, ni frappe sur le clavier.
Merci d'avance à ceux qui se pencheront sur ce problème !
Connaitre le temps d'inactivité d'un PC (Résolu et merci !)
Connaitre le temps d'inactivité d'un PC (Résolu et merci !)
Dernière modification par brossden le jeu. 07/mars/2024 6:43, modifié 1 fois.
Denis
Bonne Jounée à tous
Bonne Jounée à tous
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: Connaitre le temps d'inactivité d'un PC
Salut,
Ce code pourra certainement t'aider.
D'avance, pardon à l'auteur, car je ne sais plus d'où provient le code.
Edit: L'auteur est Infratec (post original ici)
Ce code pourra certainement t'aider.
D'avance, pardon à l'auteur, car je ne sais plus d'où provient le code.
Edit: L'auteur est Infratec (post original ici)
Code : Tout sélectionner
CompilerIf #PB_Compiler_IsMainFile
EnableExplicit
CompilerEndIf
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
Procedure.i GetIdleTime()
Static LastTime.q
Static LastDwTime.l
Protected lii.LASTINPUTINFO
Protected Result.i
lii\cbSize = SizeOf(LASTINPUTINFO)
If GetLastInputInfo_(@lii)
If LastTime = 0
LastTime = Date()
EndIf
If LastDwTime = 0
LastDwTime = lii\dwTime
EndIf
;Debug "lii\dwTime: " + Str(lii\dwTime)
If lii\dwTime <> LastDwTime
LastDwTime = lii\dwTime
;Debug "LastDwTime: " + Str(LastDwTime)
LastTime = Date()
EndIf
Result = Date() - LastTime
EndIf
ProcedureReturn Result
EndProcedure
CompilerCase #PB_OS_Linux
Structure XScreenSaverInfo Align #PB_Structure_AlignC
window.i ; screen saver window
state.l ; ScreenSaver{Off,On,Disabled}
kind.l ; ScreenSaver{Blanked,Internal,External}
til_or_since.i ; milliseconds
idle.i ; milliseconds
eventMask.l ; events
EndStructure
Macro DefaultRootWindow(disp)
XDefaultRootWindow(disp)
EndMacro
ImportC "-lX11"
XOpenDisplay.i(display.p-utf8)
XCloseDisplay.i(*display)
XDefaultRootWindow.i(*display)
EndImport
ImportC "-lXss"
XScreenSaverQueryExtension.i(*dpy, *event_base_return, *error_base_return)
XScreenSaverQueryInfo(*dpy, drawable.i, *saver_info.XScreenSaverInfo)
EndImport
Procedure.i GetIdleTime()
Protected *display
Protected event_base.i, error_base.i
Protected info.XScreenSaverInfo
Protected Result.i
*display = XOpenDisplay("")
If *display
If XScreenSaverQueryExtension(*display, @event_base, @error_base)
If XScreenSaverQueryInfo(*display, DefaultRootWindow(*display), @info)
; Debug info\window
; Debug info\state
; Debug info\kind
; Debug info\til_or_since
; Debug info\idle
; Debug info\eventMask
Result = info\idle / 1000
EndIf
Else
Debug "Error: XScreenSaver Extension not present"
EndIf
XCloseDisplay(*display)
EndIf
ProcedureReturn Result
EndProcedure
CompilerCase #PB_OS_MacOS
#kCGAnyInputEventType = ~0
#hidSystemState = 1
ImportC ""
CGEventSourceSecondsSinceLastEventType.d(CGEventSourceStateID.l,CGEventType.l)
EndImport
Procedure.i GetIdleTime()
ProcedureReturn Int(CGEventSourceSecondsSinceLastEventType(#hidSystemState,#kCGAnyInputEventType))
EndProcedure
CompilerEndSelect
;-Demo
CompilerIf #PB_Compiler_IsMainFile
Define i.i
For i = 0 To 20
Debug GetIdleTime()
Delay(1000)
Next i
CompilerEndIf
Dernière modification par boddhi le lun. 04/mars/2024 23:14, modifié 1 fois.
Re: Connaitre le temps d'inactivité d'un PC
Merci boddhi c'est exactement ce dont j'avais besoin !
Par contre comme je suis sous Windows une grande partie du code m'est inutile on peut largement simplifier !
Par contre comme je suis sous Windows une grande partie du code m'est inutile on peut largement simplifier !
Code : Tout sélectionner
Procedure.i GetIdleTime()
Static LastTime.q
Static LastDwTime.l
Protected lii.LASTINPUTINFO
Protected Result.i
lii\cbSize = SizeOf(LASTINPUTINFO)
If GetLastInputInfo_(@lii)
If LastTime = 0
LastTime = Date()
EndIf
If LastDwTime = 0
LastDwTime = lii\dwTime
EndIf
;Debug "lii\dwTime: " + Str(lii\dwTime)
If lii\dwTime <> LastDwTime
LastDwTime = lii\dwTime
;Debug "LastDwTime: " + Str(LastDwTime)
LastTime = Date()
EndIf
Result = Date() - LastTime
EndIf
ProcedureReturn Result
EndProcedure
;-Demo
CompilerIf #PB_Compiler_IsMainFile
Define i.i
For i = 0 To 20
Debug GetIdleTime()
Delay(1000)
Next i
CompilerEndIf
Denis
Bonne Jounée à tous
Bonne Jounée à tous
Re: Connaitre le temps d'inactivité d'un PC
Voici la raison de ma demande ici
je veux que mon pC s'arrête si je ne me sers pas de la souris ni du clavier pendant environ 10 minutes mon PC doit s'éteindre tout seul !
Mon code est le suivant :
J'ai modifié les options de shutdown qui ne fonctionne pas dans certains cas !
je veux que mon pC s'arrête si je ne me sers pas de la souris ni du clavier pendant environ 10 minutes mon PC doit s'éteindre tout seul !
Mon code est le suivant :
Code : Tout sélectionner
Procedure.i GetIdleTime()
Static LastTime.q
Static LastDwTime.l
Protected lii.LASTINPUTINFO
Protected Result.i
lii\cbSize = SizeOf(LASTINPUTINFO)
If GetLastInputInfo_(@lii)
If LastTime = 0
LastTime = Date()
EndIf
If LastDwTime = 0
LastDwTime = lii\dwTime
EndIf
If lii\dwTime <> LastDwTime
LastDwTime = lii\dwTime
LastTime = Date()
EndIf
Result = Date() - LastTime
EndIf
ProcedureReturn Result
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
Define i.i
Repeat
x = GetIdleTime()
Debug x
If x>= 600 ; 10 x 60 = 600 secondes
RunProgram("cmd.exe", "/c shutdown /s /t 0 ","")
EndIf
Delay(1000)
ForEver
CompilerEndIf
Dernière modification par brossden le dim. 10/mars/2024 14:27, modifié 3 fois.
Denis
Bonne Jounée à tous
Bonne Jounée à tous
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: Connaitre le temps d'inactivité d'un PC
Salut Brossden
Merci pour d'avoir partagé tes codes.
Merci pour d'avoir partagé tes codes.

Re: Connaitre le temps d'inactivité d'un PC
Très cool !
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Connaitre le temps d'inactivité d'un PC
De rien Ar-s je vous dois bien cela à tous ici, vous êtes très efficaces pour moi !
J'ai modifié les options de shutdown qui ne fonctionne pas dans certains cas !
J'ai modifié les options de shutdown qui ne fonctionne pas dans certains cas !
Denis
Bonne Jounée à tous
Bonne Jounée à tous