Détecter le plantage d'une application.

fmillox Messages postés 18 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 21 décembre 2007 - 19 sept. 2006 à 09:46
fmillox Messages postés 18 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 21 décembre 2007 - 20 sept. 2006 à 16:32
Bonjour,

J'ai une application, en l'ocurrence Acrobat Distiller, qui tourne sur un
poste en continu (session toujours ouverte). J'ai un service windows qui crée
des fichiers PostScript et qui les dépose dans des répertoires que le
Distiller parcoure et les transforme en pdf.

Le problème est que j'ai un exemple de fichier PostScript qui fait planter
complètement Acrobat Distiller. J'ai l'erreur standard :

"Acrobat Distiller a rencontré un problème et doit fermer. Nous vous prions
de nous excuser pour le désagrément encouru.
Si vous étiez...."
+ un bouton "Débogage" + un bouton "Envoyer le rapport d'erreurs" + un
bouton "Ne pas envoyer"

Est-ce que lorsqu'il y a ce type d'erreur commune à toutes applications
windows, on peut la détecter ? En gros, je voudrais que mon service puisse
scruter si ce type d'erreur a été détecté pour Acrobat Distiller et après la
gestion du plantage étant manuelle, envoyer un e-mail à l'administrateur pour
relancer Acrobat Distiller ( ça, aucun pb).

Merci d'avance.

A+

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 sept. 2006 à 10:03
Je pense qu'il serait plus simple de detecter si le process distiller est lancé....
et de le lancer, le cas échéant...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
geobasic Messages postés 69 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 3 octobre 2006
19 sept. 2006 à 10:56
Je crois que Renfield à raison tu aura du mal à détecter à distance si  Acrobat Distiller est planté. Par contre tu peux faire un petit programme à installer sur le serveur qui lance l'appli et qui boucle en continue jusqu'à la fin de l'appli pour verifier si son code exit est correct. Si c'est pas le cas il relance l'application est le tour est joué. J'avais donné un exemple lors d'un forum précédent pour le même type de problème, voici son adresse:

 http://www.vbfrance.com/infomsg_DETECTER-ERREUR_809989.aspx#7
0
fmillox Messages postés 18 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 21 décembre 2007
19 sept. 2006 à 16:34
D'abord, merci pour vos réponses.

Le problème de ton exemple c'est qu'il faut attendre le code exit. Or lors du plantage, tu n'as que le code exit que lorsque tu appuies sur "Ne pas envoyer" de la boîte d'erreur classique windows, pas avant.

Ce bout de code par exemple (associé à un simple bouton dans une appli à part) :
Dim

prc
As System.Diagnostics.Process() = Process.GetProcessesByName("acrodist")

If prc.Length > 0
ThenMsgBox(prc(0).Responding())

End
If

me permet de vérifier l'état du processus.

Tant que le processus Distiller ne plante pas (le début de la transformation PostScript vers Pdf), il m'affiche True quand je clique sur le bouton. Dès que le processus plante( boîte de dialogue windows qui apparaît ), j'appuie sur le bouton et là , 0 réponse..... En gros, il faut que j'appuie sur "Ne pas envoyer", par exemple, pour que par enchantement tout ce débloque et mon appli de test me renvoie False.......En gros, le genre de réponse qui arrive après la bataille :-(

J'ai essayé pas mal de chose mais en faite à chaque fois il faut que j'appuie sur cette boîte de dialogue pour que j'ai une réponse.
Est ce que justement la solution n'est pas là ???? ( un thread qui fait la demande de réponse au processus et qui est censé la renvoyer puis dans le thread principal un timer pour attendre et killer le process s'il ne répond pas au bout d'un certain temps.....)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 sept. 2006 à 16:44
tu dois pouvoir tester su elle te répond, ou pas, et faire un Terminate du process, si il ne répond pas

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fmillox Messages postés 18 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 21 décembre 2007
20 sept. 2006 à 16:32
J'ai trouvé un autre moyen:


Visiblement, lorsque le Distiller se plante complètement, une trace est rajoutée dans le Journal d'Evénements.


Donc, plus qu'à scruter le journal pour savoir si l'application s'est plantée.


En tout cas, merci de vous être intéressé à mon problème.


A+ 
0
Rejoignez-nous