Quelqu'un connaîtrait-il une fonction API pouvant détecter si une
application SCHPONK est dans la situation : "SCHPONK a provoqué une erreur
générale dans le module SCHPONK.EXE et doit fermer..." ?
Je cherche à écrire un programme qui détecterait cette situation, et
rebooterait alors la machine.
Merci d'avance
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Maurette
"Midnight Joker" a écrit dans le message de news: 3f67894e$0$27596$
Bonjour
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une application SCHPONK est dans la situation : "SCHPONK a provoqué une erreur générale dans le module SCHPONK.EXE et doit fermer..." ? Je cherche à écrire un programme qui détecterait cette situation, et rebooterait alors la machine.
Bonjour, J'essairais peut-être un truc du genre :
unsigned long TermStatus; do { GetExitCodeProcess(hProcessSchponk, &TermStatus); // ProcessMessages ou Wait, à vous de voir }while(TermStatus == STILL_ACTIVE);
Ou alors
WaitForSingleObject(hProcessSchponk, TimeOut); unsigned long TermStatus; GetExitCodeProcess(hProcessSchponk, &TermStatus);
TermStatus vaut maintenant : - Soit la valeur de retour "normale" définie dans le code de SCHPONK. - "The exception value for an unhandled exception that caused the process to terminate", c'est ce vous recherchez.
Je ne sais pas à quel moment l'appli est considérée comme terminée, avant ou après que la boîte "SCHPONK a provoqué une erreur générale dans le module SCHPONK.EXE et doit fermer..." ait été acquitée. Tenez-nous au courant.
Bonne journée, Pierre
"Midnight Joker" <midnightjoker@free.fr> a écrit dans le message de news:
3f67894e$0$27596$626a54ce@news.free.fr...
Bonjour
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une
application SCHPONK est dans la situation : "SCHPONK a provoqué une erreur
générale dans le module SCHPONK.EXE et doit fermer..." ?
Je cherche à écrire un programme qui détecterait cette situation, et
rebooterait alors la machine.
Bonjour,
J'essairais peut-être un truc du genre :
unsigned long TermStatus;
do
{
GetExitCodeProcess(hProcessSchponk, &TermStatus);
// ProcessMessages ou Wait, à vous de voir
}while(TermStatus == STILL_ACTIVE);
Ou alors
WaitForSingleObject(hProcessSchponk, TimeOut);
unsigned long TermStatus;
GetExitCodeProcess(hProcessSchponk, &TermStatus);
TermStatus vaut maintenant :
- Soit la valeur de retour "normale" définie dans le code de SCHPONK.
- "The exception value for an unhandled exception that caused the process to
terminate", c'est ce vous recherchez.
Je ne sais pas à quel moment l'appli est considérée comme terminée, avant ou
après que la boîte "SCHPONK a provoqué une erreur générale dans le module
SCHPONK.EXE et doit fermer..." ait été acquitée. Tenez-nous au courant.
"Midnight Joker" a écrit dans le message de news: 3f67894e$0$27596$
Bonjour
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une application SCHPONK est dans la situation : "SCHPONK a provoqué une erreur générale dans le module SCHPONK.EXE et doit fermer..." ? Je cherche à écrire un programme qui détecterait cette situation, et rebooterait alors la machine.
Bonjour, J'essairais peut-être un truc du genre :
unsigned long TermStatus; do { GetExitCodeProcess(hProcessSchponk, &TermStatus); // ProcessMessages ou Wait, à vous de voir }while(TermStatus == STILL_ACTIVE);
Ou alors
WaitForSingleObject(hProcessSchponk, TimeOut); unsigned long TermStatus; GetExitCodeProcess(hProcessSchponk, &TermStatus);
TermStatus vaut maintenant : - Soit la valeur de retour "normale" définie dans le code de SCHPONK. - "The exception value for an unhandled exception that caused the process to terminate", c'est ce vous recherchez.
Je ne sais pas à quel moment l'appli est considérée comme terminée, avant ou après que la boîte "SCHPONK a provoqué une erreur générale dans le module SCHPONK.EXE et doit fermer..." ait été acquitée. Tenez-nous au courant.
Bonne journée, Pierre
Patrick Philippot
Midnight Joker wrote:
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une application SCHPONK est dans la situation : "SCHPONK a provoqué une erreur générale dans le module SCHPONK.EXE et doit fermer..." ?
Vu de Windows, un programme qui afficherait cette MessageBox n'est pas dans une situation "anormale": il est juste en train d'exécuter son gestionnaire d'exception par défaut. C'est au programme lui-même (si vous avez le code source) de remplacer le gestionnaire par défaut par le sien propre (avec SetUnhandledExceptionFilter) et de faire ce qu'il veut dans ce cas (comme avertir l'utilisateur et rebooter - ce qui paraît toutefois une décision un rien extrême).
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.fr
Midnight Joker wrote:
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une
application SCHPONK est dans la situation : "SCHPONK a provoqué une
erreur générale dans le module SCHPONK.EXE et doit fermer..." ?
Vu de Windows, un programme qui afficherait cette MessageBox n'est pas
dans une situation "anormale": il est juste en train d'exécuter son
gestionnaire d'exception par défaut. C'est au programme lui-même (si
vous avez le code source) de remplacer le gestionnaire par défaut par le
sien propre (avec SetUnhandledExceptionFilter) et de faire ce qu'il veut
dans ce cas (comme avertir l'utilisateur et rebooter - ce qui paraît
toutefois une décision un rien extrême).
--
Patrick Philippot - Microsoft MVP [.Net]
MainSoft Consulting Services
www.mainsoft.fr
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une application SCHPONK est dans la situation : "SCHPONK a provoqué une erreur générale dans le module SCHPONK.EXE et doit fermer..." ?
Vu de Windows, un programme qui afficherait cette MessageBox n'est pas dans une situation "anormale": il est juste en train d'exécuter son gestionnaire d'exception par défaut. C'est au programme lui-même (si vous avez le code source) de remplacer le gestionnaire par défaut par le sien propre (avec SetUnhandledExceptionFilter) et de faire ce qu'il veut dans ce cas (comme avertir l'utilisateur et rebooter - ce qui paraît toutefois une décision un rien extrême).
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.fr
Mickael Pointier
Patrick Philippot wrote:
Midnight Joker wrote:
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une application SCHPONK est dans la situation : "SCHPONK a provoqué une erreur générale dans le module SCHPONK.EXE et doit fermer..." ?
Vu de Windows, un programme qui afficherait cette MessageBox n'est pas dans une situation "anormale": il est juste en train d'exécuter son gestionnaire d'exception par défaut. C'est au programme lui-même (si vous avez le code source) de remplacer le gestionnaire par défaut par le sien propre (avec SetUnhandledExceptionFilter) et de faire ce qu'il veut dans ce cas (comme avertir l'utilisateur et rebooter - ce qui paraît toutefois une décision un rien extrême).
Sauf si il est dans le cas d'une machine qui est sans écran et sans clavier, qui se trouve juste être au fin fond d'un placard pour faire tourner un processus en tache de fond, ou une application quelconque style "rendu partagé", et que celle ci à la sale habitude de crasher de temps à autre :)
Dans ce cas une détection d'application planté peut parfaitement se justifier non ? Quand au reboot, dès fois c'est nécéssaire, particulièrement lorsque la raison du plantage est un manque de resources systeme (style fuite de manettes (ou handle leak ;))
Mike
Patrick Philippot wrote:
Midnight Joker wrote:
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une
application SCHPONK est dans la situation : "SCHPONK a provoqué une
erreur générale dans le module SCHPONK.EXE et doit fermer..." ?
Vu de Windows, un programme qui afficherait cette MessageBox n'est pas
dans une situation "anormale": il est juste en train d'exécuter son
gestionnaire d'exception par défaut. C'est au programme lui-même (si
vous avez le code source) de remplacer le gestionnaire par défaut par
le sien propre (avec SetUnhandledExceptionFilter) et de faire ce
qu'il veut dans ce cas (comme avertir l'utilisateur et rebooter - ce
qui paraît toutefois une décision un rien extrême).
Sauf si il est dans le cas d'une machine qui est sans écran et sans
clavier, qui se trouve juste être au fin fond d'un placard pour faire
tourner un processus en tache de fond, ou une application quelconque
style "rendu partagé", et que celle ci à la sale habitude de crasher de
temps à autre :)
Dans ce cas une détection d'application planté peut parfaitement se
justifier non ?
Quand au reboot, dès fois c'est nécéssaire, particulièrement lorsque la
raison du plantage est un manque de resources systeme (style fuite de
manettes (ou handle leak ;))
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une application SCHPONK est dans la situation : "SCHPONK a provoqué une erreur générale dans le module SCHPONK.EXE et doit fermer..." ?
Vu de Windows, un programme qui afficherait cette MessageBox n'est pas dans une situation "anormale": il est juste en train d'exécuter son gestionnaire d'exception par défaut. C'est au programme lui-même (si vous avez le code source) de remplacer le gestionnaire par défaut par le sien propre (avec SetUnhandledExceptionFilter) et de faire ce qu'il veut dans ce cas (comme avertir l'utilisateur et rebooter - ce qui paraît toutefois une décision un rien extrême).
Sauf si il est dans le cas d'une machine qui est sans écran et sans clavier, qui se trouve juste être au fin fond d'un placard pour faire tourner un processus en tache de fond, ou une application quelconque style "rendu partagé", et que celle ci à la sale habitude de crasher de temps à autre :)
Dans ce cas une détection d'application planté peut parfaitement se justifier non ? Quand au reboot, dès fois c'est nécéssaire, particulièrement lorsque la raison du plantage est un manque de resources systeme (style fuite de manettes (ou handle leak ;))
Mike
Patrick Philippot
Mickael Pointier wrote:
Sauf si il est dans le cas d'une machine qui est sans écran et sans clavier, qui se trouve juste être au fin fond d'un placard pour faire tourner un processus en tache de fond, ou une application quelconque style "rendu partagé", et que celle ci à la sale habitude de crasher de temps à autre :)
Dans ce cas une détection d'application planté peut parfaitement se justifier non ?
Oui, c'est sûr. Mais en dehors de la possibilité de traiter ça au niveau de l'appli elle-même, je ne vois pas comment détecter une exception de l'extérieur. Encore une fois, quand la boîte de dialogue est affichée, c'est à la suite d'un unwinding suivant une exception qui n'a pa été traitée. C'est un déroulement normal du code et cela ne met pas le process dans un état particulier, je pense. Mais il y a peut-être des infos que je n'ai pas...
On peut éventuellement envisager d'injecter son propre code dans un process externe (bon courage):
http://www.codeproject.com/threads/winspy.asp
et de traiter soi-même les exceptions non traitées.
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.xx (remplacez .xx par .fr si vous répondez par e-mail)
Mickael Pointier wrote:
Sauf si il est dans le cas d'une machine qui est sans écran et sans
clavier, qui se trouve juste être au fin fond d'un placard pour faire
tourner un processus en tache de fond, ou une application quelconque
style "rendu partagé", et que celle ci à la sale habitude de crasher
de temps à autre :)
Dans ce cas une détection d'application planté peut parfaitement se
justifier non ?
Oui, c'est sûr. Mais en dehors de la possibilité de traiter ça au niveau
de l'appli elle-même, je ne vois pas comment détecter une exception de
l'extérieur. Encore une fois, quand la boîte de dialogue est affichée,
c'est à la suite d'un unwinding suivant une exception qui n'a pa été
traitée. C'est un déroulement normal du code et cela ne met pas le
process dans un état particulier, je pense. Mais il y a peut-être des
infos que je n'ai pas...
On peut éventuellement envisager d'injecter son propre code dans un
process externe (bon courage):
http://www.codeproject.com/threads/winspy.asp
et de traiter soi-même les exceptions non traitées.
--
Patrick Philippot - Microsoft MVP [.Net]
MainSoft Consulting Services
www.mainsoft.xx
(remplacez .xx par .fr si vous répondez par e-mail)
Sauf si il est dans le cas d'une machine qui est sans écran et sans clavier, qui se trouve juste être au fin fond d'un placard pour faire tourner un processus en tache de fond, ou une application quelconque style "rendu partagé", et que celle ci à la sale habitude de crasher de temps à autre :)
Dans ce cas une détection d'application planté peut parfaitement se justifier non ?
Oui, c'est sûr. Mais en dehors de la possibilité de traiter ça au niveau de l'appli elle-même, je ne vois pas comment détecter une exception de l'extérieur. Encore une fois, quand la boîte de dialogue est affichée, c'est à la suite d'un unwinding suivant une exception qui n'a pa été traitée. C'est un déroulement normal du code et cela ne met pas le process dans un état particulier, je pense. Mais il y a peut-être des infos que je n'ai pas...
On peut éventuellement envisager d'injecter son propre code dans un process externe (bon courage):
http://www.codeproject.com/threads/winspy.asp
et de traiter soi-même les exceptions non traitées.
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.xx (remplacez .xx par .fr si vous répondez par e-mail)
lo
"Midnight Joker" a écrit
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une application SCHPONK est dans la situation : "SCHPONK a provoqué une erreur générale dans le module SCHPONK.EXE et doit fermer..." ? Je cherche à écrire un programme qui détecterait cette situation, et rebooterait alors la machine. Merci d'avance
Vu le style du programme, je pense qu'une solution "crade" ne serait pas forcément mal vue ... Alors je tenterai un timer qui chercher regulièrement si la boite de dialogue "gnaagna ERREUR GENERALE" existe. Dans le cas où elle existe, je reboote.
Loic.
"Midnight Joker" a écrit
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une
application SCHPONK est dans la situation : "SCHPONK a provoqué une erreur
générale dans le module SCHPONK.EXE et doit fermer..." ?
Je cherche à écrire un programme qui détecterait cette situation, et
rebooterait alors la machine.
Merci d'avance
Vu le style du programme, je pense qu'une solution "crade" ne serait pas
forcément mal vue ...
Alors je tenterai un timer qui chercher regulièrement si la boite de
dialogue "gnaagna ERREUR GENERALE" existe. Dans le cas où elle existe, je
reboote.
Quelqu'un connaîtrait-il une fonction API pouvant détecter si une application SCHPONK est dans la situation : "SCHPONK a provoqué une erreur générale dans le module SCHPONK.EXE et doit fermer..." ? Je cherche à écrire un programme qui détecterait cette situation, et rebooterait alors la machine. Merci d'avance
Vu le style du programme, je pense qu'une solution "crade" ne serait pas forcément mal vue ... Alors je tenterai un timer qui chercher regulièrement si la boite de dialogue "gnaagna ERREUR GENERALE" existe. Dans le cas où elle existe, je reboote.
Loic.
Patrick Philippot
lo wrote:
Vu le style du programme, je pense qu'une solution "crade" ne serait pas forcément mal vue ... Alors je tenterai un timer qui chercher regulièrement si la boite de dialogue "gnaagna ERREUR GENERALE" existe. Dans le cas où elle existe, je reboote.
Le problème, c'est que justement, certains programmes remplacent le gestionnaire par défaut d'exceptions non traitées par le leur et que
1) la boîte de dialogue peut-être absolument n'importe quoi dans n'importe quelle langue (voir système de bug report d'IE, d'Outlook, de Yahoo Messenger,...). C'est une pratique de plus en plus courante (et je dirai, souhaitable).
2) il peut très bien ne pas y avoir de boîte de dialogue du tout (tout dépend du handler d'exceptions non traitées).
Cette approche fonctionnera donc souvent mais pas à 100%. On me dira, c'est mieux que rien...
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.xx (remplacez .xx par .fr si vous répondez par e-mail)
lo wrote:
Vu le style du programme, je pense qu'une solution "crade" ne serait
pas forcément mal vue ...
Alors je tenterai un timer qui chercher regulièrement si la boite de
dialogue "gnaagna ERREUR GENERALE" existe. Dans le cas où elle
existe, je reboote.
Le problème, c'est que justement, certains programmes remplacent le
gestionnaire par défaut d'exceptions non traitées par le leur et que
1) la boîte de dialogue peut-être absolument n'importe quoi dans
n'importe quelle langue (voir système de bug report d'IE, d'Outlook, de
Yahoo Messenger,...). C'est une pratique de plus en plus courante (et je
dirai, souhaitable).
2) il peut très bien ne pas y avoir de boîte de dialogue du tout (tout
dépend du handler d'exceptions non traitées).
Cette approche fonctionnera donc souvent mais pas à 100%. On me dira,
c'est mieux que rien...
--
Patrick Philippot - Microsoft MVP [.Net]
MainSoft Consulting Services
www.mainsoft.xx
(remplacez .xx par .fr si vous répondez par e-mail)
Vu le style du programme, je pense qu'une solution "crade" ne serait pas forcément mal vue ... Alors je tenterai un timer qui chercher regulièrement si la boite de dialogue "gnaagna ERREUR GENERALE" existe. Dans le cas où elle existe, je reboote.
Le problème, c'est que justement, certains programmes remplacent le gestionnaire par défaut d'exceptions non traitées par le leur et que
1) la boîte de dialogue peut-être absolument n'importe quoi dans n'importe quelle langue (voir système de bug report d'IE, d'Outlook, de Yahoo Messenger,...). C'est une pratique de plus en plus courante (et je dirai, souhaitable).
2) il peut très bien ne pas y avoir de boîte de dialogue du tout (tout dépend du handler d'exceptions non traitées).
Cette approche fonctionnera donc souvent mais pas à 100%. On me dira, c'est mieux que rien...
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.xx (remplacez .xx par .fr si vous répondez par e-mail)
lo
"Patrick Philippot" a écrit
Le problème, c'est que justement, certains programmes remplacent le gestionnaire par défaut d'exceptions non traitées par le leur et que
1) la boîte de dialogue peut-être absolument n'importe quoi dans n'importe quelle langue (voir système de bug report d'IE, d'Outlook, de Yahoo Messenger,...). C'est une pratique de plus en plus courante (et je dirai, souhaitable).
2) il peut très bien ne pas y avoir de boîte de dialogue du tout (tout dépend du handler d'exceptions non traitées).
Cette approche fonctionnera donc souvent mais pas à 100%. On me dira, c'est mieux que rien...
J'ai bien compris, mais vu le probleme, je pense que le monsieur est confronté à un programme bien spécifique ( et il est surement en mesure de donner exactement le message d'erreur qu'on lui affiche ... ). Et si il a plein de programmes différents qui plantent régulièrement en obligeant à rebooter la machine, il devrait penser à traiter les causes plutot que les conséquences ...
Loic.
"Patrick Philippot" a écrit
Le problème, c'est que justement, certains programmes remplacent le
gestionnaire par défaut d'exceptions non traitées par le leur et que
1) la boîte de dialogue peut-être absolument n'importe quoi dans
n'importe quelle langue (voir système de bug report d'IE, d'Outlook, de
Yahoo Messenger,...). C'est une pratique de plus en plus courante (et je
dirai, souhaitable).
2) il peut très bien ne pas y avoir de boîte de dialogue du tout (tout
dépend du handler d'exceptions non traitées).
Cette approche fonctionnera donc souvent mais pas à 100%. On me dira,
c'est mieux que rien...
J'ai bien compris, mais vu le probleme, je pense que le monsieur est
confronté à un programme bien spécifique ( et il est surement en mesure de
donner exactement le message d'erreur qu'on lui affiche ... ).
Et si il a plein de programmes différents qui plantent régulièrement en
obligeant à rebooter la machine, il devrait penser à traiter les causes
plutot que les conséquences ...
Le problème, c'est que justement, certains programmes remplacent le gestionnaire par défaut d'exceptions non traitées par le leur et que
1) la boîte de dialogue peut-être absolument n'importe quoi dans n'importe quelle langue (voir système de bug report d'IE, d'Outlook, de Yahoo Messenger,...). C'est une pratique de plus en plus courante (et je dirai, souhaitable).
2) il peut très bien ne pas y avoir de boîte de dialogue du tout (tout dépend du handler d'exceptions non traitées).
Cette approche fonctionnera donc souvent mais pas à 100%. On me dira, c'est mieux que rien...
J'ai bien compris, mais vu le probleme, je pense que le monsieur est confronté à un programme bien spécifique ( et il est surement en mesure de donner exactement le message d'erreur qu'on lui affiche ... ). Et si il a plein de programmes différents qui plantent régulièrement en obligeant à rebooter la machine, il devrait penser à traiter les causes plutot que les conséquences ...