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

Windows Discussion :

Rapport d'erreurs Windows


Sujet :

Windows

  1. #1
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut Rapport d'erreurs Windows
    Bonjour,
    Je voudrais récupérer le texte du rapport d'erreurs de windows (que l'on peut d'ailleurs envoyer à Microsoft) qui contient de nombreuses informations sur le programme et la raison du crash (adresse de base, adresse de l'exception, pile, registres,dll chargées,...).

    Malheureusement, Windows a fait un rapport d'erreurs avec un contenu qu'on ne peut pas copier dans le presse papier.
    J'ai regardé sur le disque pour voir si le contenu n'était pas dumpé mais je n'ai rien trouvé.

    Savez vous comment récupérer le contenu ?
    Je pensais à une application qui récupère le texte du dialog contenant le texte (utilisation API FindWindo...). Si vous avez déjà un bout de code, n'hésitez pas à m'en faire profitez, c'est assez urgent...

    Merci

  2. #2
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    J'ai un peu progressé dans ma quête...
    Résultat : Je peux récupérer la fenêtre avec l'API FindWindow et le texte avec l'API GetWindowText.
    Le problème est qu'il me retourne le texte qui est affiché à l'écran seulement. Il y a l'ascenseur qui me permet de faire défiler le texte.

    J'ai d'abord pensé essayer de récupérer le pointeur du texte en me disant que je pourrais aller chercher le texte en mémoire de l'application (en fait je pense que c'est faisable en étant en mode debug, ce qui permet d'examiner la mémoire d'autres process, mais cela requis les droits administrateur sur la machine ou s'exécute le programme :-(. )

    Sinon, je peux faire défiler la barre en envoyant des messages windows à la scrollbar. Le problème c'est que l'on peut remplir assez vite la pile windows qui gére les évènements et en plus, je ne sais pas comment m'arrêter "proprement" (j'ai bien des astuces comme comparer le texte extrait à la boucle précédente avec le texte de la boucle courante pour voir si on a progressé). A quel moment puis-je savoir que je suis arriver à la fin du défilement ?

    Merci

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 703
    Points
    10 703
    Billets dans le blog
    3
    Par défaut
    C'est pour ta propre appli ?
    Si oui, y'a mieux:
    http://www.codeproject.com/debug/XCrashReportPt4.asp
    http://www.codeproject.com/debug/crash_report.asp

  4. #4
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Oui, c'est pour un usage perso.
    Merci pour les liens, c'est exactement ce que je recherchais et c'est plus 100 fois plus efficace que ce que j'ai codé en 45 min

  5. #5
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    En fait, le problème est que dans ces applications, il faut mêler le code à celui de mon application pour gérer les exceptions.
    J'aimerais aboutir avec une solution externe au programmme.
    Du coup, je cherche encore à récupérer le texte.
    J'ai un petit problème : je voudrais savoir ou se situe la scrollbar, c'est à dire est on arrivé à la fin ? Savez vous comment faire ca ?

    Merci

  6. #6
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 962
    Points : 59 642
    Points
    59 642
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    La fonction GetScrollInfo devrait t'aider.

  7. #7
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Merci beaucoup
    J'ai une dernière question. Comment puis-je faire si je ne veux pas remplir la pile des évènements Windows ? Y'a t-il une méthode fiable ? Faut-il forcément mettre un sleep et si oui comment calculer le temps ?

    Merci

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 703
    Points
    10 703
    Billets dans le blog
    3
    Par défaut
    Précises ta pensée... pile de ton programme ? Ou file des messages ?

  9. #9
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    file des messages windows

  10. #10
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 703
    Points
    10 703
    Billets dans le blog
    3
    Par défaut
    Pour ne pas qu'elle se remplisse, il suffit de la vider régulièrement, autrement dit de traiter les messages, autrement dit de passer régulièrement dans ta boucle des messages (GetMessage() ...). Pour celà, faut éviter de faire des traitements trop longs. Une solution, c'est de balancer les traitements couteux dans un thread.

  11. #11
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Oui, mais je rappelle que je controle la scrollbar d'une autre application, donc je peux pas changer la boucle des messages d'une application windows (en l'occurence le rapport d'erreur windows dont le contenu n'est pas copiable :-( ).

    Merci

  12. #12
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 703
    Points
    10 703
    Billets dans le blog
    3
    Par défaut
    Ah... ça n'a rien à voir.
    Le contenu n'est pas copiable parce que c'est un autre process qui contient le texte, dans sa propre mémoire à lui.
    C'est compliqué pour y arriver... Pourquoi tu ne veux pas toucher à ton code ?

  13. #13
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Disons que je veux utiliser cette solution dans plusieurs programmes et il y a aussi une autre raison que je ne peux pas dévoiller. Enfin, je dois être trop têtu

Discussions similaires

  1. Décoder le rapport d'erreur windows
    Par matll dans le forum Windows
    Réponses: 0
    Dernier message: 04/01/2012, 03h18
  2. Rapport d'erreurs Windows pour crash programme C++.
    Par elraton dans le forum Windows
    Réponses: 7
    Dernier message: 02/02/2010, 11h47
  3. Message d'erreur Windows lors de l'exécution de l'appli D6-
    Par kolac dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/12/2004, 17h55
  4. Erreur windows lors du malloc
    Par Elessar dans le forum C
    Réponses: 5
    Dernier message: 16/12/2003, 08h53
  5. Personnaliser un rapport d'erreur sous Windows XP
    Par Neilos dans le forum Windows
    Réponses: 5
    Dernier message: 21/11/2003, 18h13

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