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

VB 6 et antérieur Discussion :

handles, évènements dans vb6


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Janvier 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 1
    Points : 2
    Points
    2
    Par défaut handles, évènements dans vb6
    j'ai une application vb6 basée sur une fenêtre principale de type MDI Form avec plusieurs fenêtres de type Child Form dans mon projet.
    la question à la base est de détecter l'inactivité de l'utilisateur à partir d'un certain délai (5mn par exemple) et pendant un temps bien défini (15mn par exemple), et de le déconnecter au-delà. mais si avant 15mn ce dernier réagit, alors le programme doit détecter son retour en activité et stopper le décompte.
    Personnellement voici la réflexion que je me suis fait de prime abord:
    -écrire un bloc de code qui doit être capable de détecter qd le programme a reçu un évènement.
    -centraliser ce bloc de code dans un module afin qu'il détecte les évènements qui se produise sur n'importe quel fenêtre (MDI ou Child).
    question1:
    existe t-il une procédure/fonction windows système qui informe une application qu'un évènement s'est produit ?
    si oui, comment la récupérer en vb6 ?
    question2:
    est-il possible de donner le contrôle de tous les childs au mdi form du programme, i.e un évènement se produit dans le child peut-il être récupéré par le mdi form ?

    enfin, si quelqu'un peut me donner un coup de pouce dans la réflexion et même des pistes d'implémentation, ça me fera avancer dans ce projet.
    merci d'avance.

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Bonjour et BIENVENUE sur DVP.

    Pour un début, voici un exemple de code où l'on s'intéresse à l'appuie sur une touche du clavier ou un clic souris.
    Essaie de l'adapter à ton cas en ajoutant une valeur minimale et une autre maximale pour le temps d'inactivité :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    ' Pour tester, mettre un contrôle Label1 sur Form1
    Option Explicit
     
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
     
    Private bFIN As Boolean
     
    Private Sub Form_Load()
    Dim lLastAction As Long 'Valeur du Timer pour la dernière action clavier ou souris
    Dim lSecondsIdle As Long 'Nombre de secondes depuis la dernière action
    Dim iCt As Integer
     
    bFIN = False ' initialisation du flag qui arrêtera "Loop"
    Me.Show ' s'assurer que Form1 est affichée
     
     Do Until bFIN = True
     
        For iCt = 0 To 255 'parcourt toutes les touches
            If GetAsyncKeyState(iCt) <> 0 Then ' si une touche est enfoncée, remet à zéro le compteur
                lLastAction = Timer
            End If
            DoEvents ' rend la main au système et/ou à l'utilisateur
        Next iCt
        lSecondsIdle = Timer - lLastAction ' Retourne le temps d'inactivité (souris et clavier)
        ConvTime lSecondsIdle
     Loop
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
        ' Arrête Loop
        bFIN = True
        ' S'assure que l'application prend fin
        End
    End Sub
     
    Sub ConvTime(TM As Long)
      Dim H&, M&, S&
      H = TM \ 3600
      M = (TM - H * 3600) \ 60
      S = TM - H * 3600 - M * 60
      'Affiche la durée d'inactivité dans un Label
      Label1 = Right("00" & CStr(H), 2) + ":" + Right("00" & CStr(M), 2) + ":" + Right("00" & CStr(S), 2)
    End Sub
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par cyfo2015 Voir le message
    est-il possible de donner le contrôle de tous les childs au mdi form du programme, i.e un évènement se produit dans le child peut-il être récupéré par le mdi form ?
    je crains qu'il soit nécessaire de passer par du subclassing avec SetWindowLong() éventuellement
    Ainsi tu obtiens la fonction de procédure de fenêtre pour gérer les messages de gestion MDI

  4. #4
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour,
    Voir du coté de SetTimer et GetLastInputInfo

Discussions similaires

  1. Réponses: 10
    Dernier message: 21/02/2007, 20h16
  2. Créer monprog.exe en gris (inactif) dans VB6
    Par Loyre dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/01/2005, 13h40
  3. Perte de gestionnaire d'événements dans une fenêtre
    Par Benjamin GAGNEUX dans le forum Composants VCL
    Réponses: 15
    Dernier message: 23/08/2004, 20h14
  4. Modifier un événement dans le code
    Par HT dans le forum Langage
    Réponses: 6
    Dernier message: 20/06/2003, 09h46
  5. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19

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