jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
31 mars 2006 à 10:48
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 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
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 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>
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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