Démon d'écoute

Description

Classe d'objet d'écoute d'évènements
Auteur : Florent Bénetière
Contact : tnerolf@lekod.com
Version : 1.1

Cette classe se propose de générer un Démon d'écoute d'évènements
- Elle déclenche un évènement :
- Si le poste est resté inactif pendant un délai déterminé (aucun mouvement ou clic de la souris, aucune entrée clavier)
- Si l'instant "t" est dans un créneau horaire
- Toutes les "x" périodes "P" (Timer)
et ce, que l'application native du démon ait le focus ou non

CONTRAINTES
- L'implémentation de cette classe d'objet, du fait qu'elle possède des évènements, doit se faire dans un autre Objet
Exemple : Un Formulaire Excel ou Access

- Pour que les objets soient détruits proprement, il faut que l'ecoute soit précédemment ARRETEE.
Exemple : MonDemon.Arrete
Exit sub


Vous trouverez ci-dessous le code du formulaire Excel qui m'a servi à implémenter les fonctionnalités de cette classe.
Dans le fichier zip, vous trouverez, en plus de la classe d'objet, le formulaire Excel 2007 précité.
Pour celles et ceux qui utilisent Office 2003, je les invite à installer sur leur poste le
Module de compatibilité pour Microsoft Office System 2007 (FileFormatConverters Office 2007.exe)

Source / Exemple :


'Le classeur
Private Sub Workbook_Open()
F_Ecoute.Show 0 'Il faut que le formulaire soit affiché en mode non modal car,
'autrement, on a un message d'erreur sur l'exécution du code lorsque
'la pile d'appel est remontée jusqu'ici
End Sub

'Le Formulaire
Option Explicit
'Comme la classe d'objet possède un évènement, on est obligé de l'implémenter
'au sein d'un Objet, pour le cas, un UserForm

Private WithEvents MonDemon As Demon

Private Sub B_Active_Click()
B_Desact.Enabled = True
B_Desact.SetFocus
B_Active.Enabled = False
MonDemon.Demarre
End Sub

Private Sub B_Desact_Click()
B_Active.Enabled = True
B_Active.SetFocus
B_Desact.Enabled = False
MonDemon.Arrete
End Sub

Private Sub MonDemon_EstDansCreneau()
MsgBox "L'instant ""t"" est dans le créneau du Démon => On va remédier à cela"
MonDemon.Debut = "22:00": MonDemon.Fin = "02:00"
End Sub

Private Sub MonDemon_SurDebug(Prochaine_Echeance As Double)
E_Chrono_Titre = "Prochaine écheance de test d'inactivité => " & vbCrLf & CDate(Prochaine_Echeance)
End Sub

Private Sub MonDemon_SurInactivite()
MsgBox "Que fais-tu, Petit Cul ?", vbQuestion, "Ben t'es où ?"
End Sub

Private Sub MonDemon_SurPeriode()
E_Chrono.Caption = Now
End Sub

Private Sub UserForm_Initialize()
'On initialise le démon
Set MonDemon = New Demon
With MonDemon
    .Active_Creneau = True
    .Debut = "02:00"
    .Fin = "00:00" '=>Cela implique un début du créneau à 02h00 aujourd'hui et une fin de celui-ci demain à Minuit
    .Active_Periode = True
    .Periode 1, "s"
    .Active_Detect_inactivite = True
    .Inactivite 10, "s"
    Me.Show 0 'On est obligé de mettre Me.Show car autrement, le démarrage de l'écoute en boucle fait avec B_Active_Click
    'empêche le formulaire de s'afficher
End With
B_Active_Click
End Sub

Private Sub UserForm_Terminate()
MonDemon.Arrete
Set MonDemon = Nothing
End Sub

Conclusion :


Il est possible en cours de route de :
- Arrêter et redémarrrer l'écoute
- Activer ou désactiver l'écoute d'évènements spécifiques
- Changer les échéances

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.