Connaitre les événements en attente de traitement

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 31 mars 2006 à 10:48
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 3 avril 2006 à 10:14
'Lut tout le monde.

Je travaille avec W2000 et VB6 SP6.

Je debug une application en utilisant WINMACRO.
Je me suis rendu compte que mon appli n'effectuait pas toujours les même tâches (jusqu'ici rien d'anormal).

Pour synthétiser le fonctionnement "Normal" serait:

Blalblabla
Appui sur bouton de mot de passe
Charger fenêtre Mot de passe (Charger en VBMODAL)
Entrer du mot de passe (#### + Entrée)
Mot de passe Fin de prog detecté
Procédure de déchargement de l'appli.

Ensuite il y a le fonctionnement anormal (qui arrive moins souvant)
Blalblabla
Appui sur bouton de mot de passe
Charger fenêtre Mot de passe (Charger en VBMODAL)
Entrer du mot de passe (####)
EVENEMENT DE RECEPTION TRAME MODBUS + Traitement
Appui sur bouton de mot de passe
Charger fenêtre Mot de passe (Charger en VBMODAL)
PLANTAGE

Deux petites questions pour suivre cette explication:
Une fois le programme compilé

- J'aimerais savoir si il est possible à un instant T de lister les événements en attente de mon application.
En fait j'aimerais pouvoir enregistrer létat de la pile d'événements avec APP.LOGEVENT
- Ou une autre option (mais je suis encore moins sûr de sa mise en place) serait de savoir à n'importe quel moment qui a appelé une Sub (PRIVEE EN PLUS) sachant que cette sub le programme ne l'appelle pas en interne

Merci d'avance pour vos Suggestion
@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée

3 réponses

rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
2 avril 2006 à 01:15
Salut julien,

Normalement, à l'intérieur de ton application VB, il n'a pas d'évènements en attente, si un évènement se déclenche, il y a traitement (si dans la procédure de réception de l'évènement, tu fais une traitement immédiat), sinon il peut y avoir une mise queue et un traitement différé.

Par contre, vu au niveau externe de VB (au niveau de la classe ThunderFormDC par exemple), il existe une "pompe à message" qui reçoit et dispatche les messages vers les fenêtres qui sont concernées (ou les threads ). Si tu te places à ce niveau, tu peux rediriger cela vers une procédure de crochetage, à qui tu sous-traiteraient l'écriture de ton journal.
C'est lourd, mais c'est faisable (lis le paragraphe sous-classement, dans le MSDN:
[vbcon98.chm::/Html/vbconpassingfunctionpointerstodllprocedurestypelibraries.htm vbcon98.chm::/Html/vbconpassingfunctionpointerstodllprocedurestypelibraries.htm])

Bon, après je ne comprend pas bien ta question. Si tu veux l'équivalent de la pile des appels, ça va être chaud, surtout en compilé! Mais ce que je comprend le moins, c'est qui appelle ta procédure privée, un callback?

Pour finir, ce que tu décris concernant l'ordre d'appel des fenêtres, puis de l'intervention de ton évènement, suivi de la réouverture de la fenêtre de log :
Essaies te tracer les Initialize, Terminate, Load et Unload. Si tu vois des choses genre Unload alors que tu charges et Load alors que tu décharges, cherches, dans le MSDN, le chapitre sur les cycles de vie d'une feuilles, et tu y trouveras peut-être la réponse (il y a notamment un état, le 5ème, dans la vie du formulaire qui peut t'intéresser, d'ailleurs peut-être en rapport avec le callback, si callback il y a)
([vbcon98.chm::/Html/vbconlifecycleofvisualbasicforms.htm vbcon98.chm::/Html/vbconlifecycleofvisualbasicforms.htm])



à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
3 avril 2006 à 09:07
Salut rvblog,

Tout d'abord merci pour ces explications, je vais aller voir tout ça.
Ensuite pour te donner des compléments d'informations sur mon porblème:

Appelons mon Bouton Btn

En fait le problème c'est que :
- j'ai un événement Click sur Btn qui "Logiquement" n'a aucune raison d'être. (le deuxième Appui sur bouton mot de passe indiqué dans mon premier post)
- Ce deuxième appui survient donc sans raison apparante, après un événement recu (reception d'un trame TCP), car j'ai l'impression que au lieu de reprendre là où il était avant l'événement extérieur, il recommence la fonction Btn_Click() en entière.

Pour répondre à ta question: qui appelle ta procédure privée: Je répondrais simplement PERSONNE depuis le code. Cette procédure est appelée uniquement lors de l'appui sur le bouton par la souris ou par la touche Entrée.

Enfin Voila.
J'ai trouvé une "Solution" ou plutôt une rustine à ce problème, mais j'aimerais plus trouvé la source du problème.

En tout cas encore merci pour ton aide. J'espère que j'ai été plus clair dans ce post.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
3 avril 2006 à 10:14
Salut julien,

d'accord, c'est clair.


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
Rejoignez-nous