IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Fermeture par timer en cas d'inactivité


Sujet :

VBA Access

  1. #1
    Invité
    Invité(e)
    Par défaut Fermeture par timer en cas d'inactivité
    bonjour,
    suite à un post trouve icihttp://www.developpez.net/forums/sho...ighlight=timer j'essaie de metre en place cette fonctionnalité dans une application.
    J'ai un fichier de test pour l'étude, et dans un formulaire j'ai place ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    gInactive = 5
    End Sub
     
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    gInactive = 5
    End Sub
    ce qui normalement devrait empecher la base de se fermer pour inactivité au dela de 5 secondes (valeur declaree pour les essais evidemment)

    voici le code module "Globales" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Compare Database
    Public gInactive As Byte
    voici le code du formulaire cache "Decompte" qui contient le Timer et qui s'ouvre en meme temps que le 1er form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Load()
    gInactive = 5
    End Sub
     
    Private Sub Form_Timer()
    If gInactive = 0 Then
    Application.Quit
    Else
    gInactive = gInactive - 1
    End If
    End Sub
    si quelqu'un peut me donner un petit coup de main ce serait sympa... en attendant je continue de plancher

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 073
    Points : 24 695
    Points
    24 695
    Par défaut
    Bonjour,

    Quel est le problème ou la question ?

    Cordialement,

  3. #3
    Invité
    Invité(e)
    Par défaut
    bonjour Loufab,
    eh bien je ne comprends pas pourquoi le code sur Form_MouseMove ou Form_KeyDown n'est pas pris en compte ce qui fait que l'appli se ferme apres la tempo programmee...

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 073
    Points : 24 695
    Points
    24 695
    Par défaut
    Après quelques essais il s'avère que la variable ginactive est exprimée en minutes. Contrairement au timer qui est en millisecondes. Chaque fois que tu bouge la souris il retarde la fermeture de 5 minutes.

    Regarde également dans le code Sur Timer la variable TempsInactivité indique 15. j'ai du la reduire à 0.5 pour avoir un test en 30sec.

    Je pense qu'avec ces infos tu devrais pouvoir faire ta mise au point.

    Cordialement,

  5. #5
    Invité
    Invité(e)
    Par défaut
    pour plus de clarte je joins un fichier test...
    Mais je ne comprends pas où la variable va pecher sa valeur à 5 minutes puisque le timer est regle sur 1000 millisecondes ?
    pour moi 5 fois 1000 millisecondes = 5 secondes !
    pour tout dire j'ai un peu de mal à comprendre le processus...
    Dernière modification par Invité ; 05/03/2007 à 22h04.

  6. #6
    Invité
    Invité(e)
    Par défaut
    J'en suis toujours au même point depuis hier... je cale sur les evenements souris qui ne sont pas pris en compte quelqu'un pour un petit coup de pouce ?

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    je ne crois pas que ce système de détection d'activité soit viable car il réclame de tester de nombreux évènements dans chaque formulaire et il va devenir rapidement une vrai usine à gaz.

    Si tu souhaites un autre système relativement simple mais qui ne teste que le controle actif et ouvre un fenêtre d'avertissement avant fermeture, dis le moi.

    Cordialement,

    Philippe

  8. #8
    Invité
    Invité(e)
    Par défaut
    bonjour Philben,
    d'abord je te remercie pour ton offre...
    Effectivement je cherche à metre en place un systeme qui puisse fermer l'application, si aucune activité n'est detectée sur un poste donné.
    (le mdb etant place sur un seveur accessible depuis plusieurs PC)
    Car à plusieurs reprises je me suis retrouvé avec l'appli restee ouverte et personne derriere le PC pour fermer et la session ouverte au nom du dernier utilisateur.
    Avec une boite de message, ça ferait plus convivial.
    PS : je ne veux pas du clé en main ! mais je voudrais comprendre la mecanique.

  9. #9
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 941
    Points : 4 865
    Points
    4 865
    Par défaut
    Bonjour,

    As-tu parcouru le tuto de Maxence Hubiche, les specs sont un peu différentes mais il me semble qu'il pourrait t'aider :

    http://mhubiche.developpez.com/Acces...autofermeture/

    Bonne fermeture

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    PS : je ne veux pas du clé en main ! mais je voudrais comprendre la mecanique
    Pour le principe de base, il faut aller voir ici :
    http://support.microsoft.com/kb/128814/fr

    Après l'avoir mis à ma sauce j'ai obtenu un système sympa et fiable.

    Bon courage,

    Philippe

  11. #11
    Membre régulier
    Homme Profil pro
    Technicien biomédical
    Inscrit en
    Mai 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien biomédical
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2005
    Messages : 60
    Points : 81
    Points
    81
    Par défaut
    Merci pour ces recherches; ca va rendre service à beaucoup.
    La méthode Microsoft fonctionne à merveille.
    Astuce : Avec une légère adaptation, elle permet de tracer facilement ce que font les utilisateurs

    Génial

  12. #12
    Invité
    Invité(e)
    Par défaut
    bonjour Philben,
    eh bien j'ai opté pour ta solution. Ca fonctionne tres bien ça ne nécessite pas d'adaptation énorme pour le fonctionnement...
    J'ai mis le délai à 60 minutes et supprimé la boite de message, car celle-ci necessite une réponse par un clic pour fermer la base !
    A la place de cette MsgBox le form caché "DetectIdleTime" ouvre un formulaire visible façon "splash" et dans le module duquel j'ai recollé le mëme code que celui du DetectIdleTime.
    Avec la IDLEMINUTES réglée à 1 minute pour une fermeture automatique définitive si aunune action n'est effectuée.
    l'alternative étant un bouton réouvrant le le MenuPrincipal, et par la même occasion réinitialise le form "DetectIdleTime".
    Pour enjoliver le splash je vais essayer de mettre en place un compte à rebours ou une barre d progression avant fermeture.

  13. #13
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    Fifi69 a écrit
    Merci pour ces recherches; ca va rendre service à beaucoup
    Très heureux que ça vous soit utile et je conserve l'idée de traçage qui peut servir !

    Orl45, c'est marrant car tes solutions (splash, compte à rebours, pilotage par le menu principal) sont aussi celles que j'ai appliqué.
    Je profite aussi du timer sur le splash screen pour faire varier les couleurs du fond et des textbox pour bien attirer l'attention de l'utilisateur.

    Voici une astuce pour que le fameux splash screen soit au dessus de toutes les fenêtres ouvertes dans Windows au cas où l'application Access n'a plus le focus. Il faut déclarer l'API Windows suivantes et la fonction <TopMost> dans un module standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
                                                        ByVal hWndInsertAfter As Long, _
                                                        ByVal X As Long, ByVal y As Long, _
                                                        ByVal cx As Long, ByVal cy As Long, _
                                                        ByVal wFlags As Long) As Long
    Private Const HWND_TOPMOST = -1
    Private Const SWP_NOSIZE = &H1
    Private Const SWP_NOMOVE = &H2
     
    ' Permet de placer un formulaire au-dessus de toutes les fenêtres de Windows
    ' Déclarer nécessairement ce formulaire indépendant
    Public Sub TopMost(ByVal lhandleWindow As Long)
       Call SetWindowPos(lhandleWindow, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
    End Sub
    En propriété du splash screen, le déclarer <fen. indépendante> à Oui

    Dans l'évènement Form_Load du splash, ajouter la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TopMost Me.Form.Hwnd
    Le splash devient ainsi la fenêtre Top Most de windows jusqu'à sa fermeture

    Pour en savoir plus sur cette API :
    http://docvb.free.fr/apidetail.php?idapi=146

    Amicalement,

    Philippe

  14. #14
    Invité
    Invité(e)
    Par défaut
    Resalut Philben,
    excellente cette idee du splash au dessus des autres fenetres je vais tester ça tout de suite, et je dois avouer que ça je n'y avais pas pense, et pour tout dire je ne savais pas que ça pouvait se faire !
    par contre pour le compte à rebours en visu sur le splash, là aucune idee de comment monter ça... j'ai pas encore eu le temps de fouiner dans la FAQ.
    Mais je vais eplucher ça demain sans faute.

  15. #15
    Invité
    Invité(e)
    Par défaut
    bonjour à tous,
    pour le splash screen au dessus des autres fenetres, c'est bon ça fonctionne et pour le clignotement j'ai trouve cette combine placée dans l'evenement timer
    les label etant le nom des étiquettes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me!label1.Visible = Not Me!label1.Visible
    Me!label2.Visible = Not Me!label2.Visible
    Me!label3.Visible = Not Me!label3.Visible
    et en reglant l'intervalle minuterie sur 200 l'effet clignotant tape bien dans l'oeil.
    Dernière modification par Invité ; 28/02/2007 à 01h17.

Discussions similaires

  1. fermeture automatique en cas d'inactivité
    Par chahnou dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/10/2014, 19h31
  2. fermeture automatique en cas d'inactivité
    Par chahnou dans le forum Access
    Réponses: 3
    Dernier message: 20/10/2014, 14h02
  3. [Débutant] Fermeture Forms par bouton et par timer
    Par jujutix dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/11/2012, 16h19
  4. Fermeture de session en cas d'inactivité
    Par Mat67 dans le forum Langage
    Réponses: 2
    Dernier message: 26/08/2008, 14h43
  5. récupérer l'événement "fermeture par la croix" de
    Par hamurielle dans le forum Windows Forms
    Réponses: 4
    Dernier message: 08/04/2005, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo