Module pour remplacer l erreur critique de protection generale

Soyez le premier à donner votre avis sur cette source.

Vue 4 303 fois - Téléchargée 301 fois

Description

Permet d'intercepter et de remplacer les erreurs issues d'API tout en déjouant « the general protection fault ». Lorsqu'une erreur de protection générale se produite, VB6 ne peut la gérer simplement. Cela provoque un crash avec le message : « vb6.exe - erreur d'application » ou « MyProg.exe - Application Error » et l'application se termine.

Ce module est axé autour de l'API SetUnhandledExceptionFilter, permettant à une application de remplacer le gestionnaire d'exception top-level. Le code source contient un exemple dans une form et le module en question. L'exemple provoque un crash si la gestion d'erreur n'est pas activée. Le message du crash est remplacé par un simple MsgBox. L'application n'est donc plus terminée et son programme continue.

Consultez la zone de code pour l'utiliser. Ça ne fonctionne pas dans l'IDE, faut compiler le projet.

J'ai placé le niveau de la source à expert, car je pense que les initiés ne rencontrent pas souvent ces crashs. Ce code source n'est pas de moi, je l'ai extrait d'un livre traitant des API Win32.

Source / Exemple :


' Pour déjouer l'erreur critique,
' appeller la fonction SetHandlerGPF dans Form_Load :
Private Sub Form_Load()
   ' installe le détournement de l'erreur de protection générale
   Call SetHandlerGPF
End Sub

' Pour restaurer la gestion standard de protection générale
' mettre dans Form_Unload :
Private Sub Form_Unload(Cancel As Integer)
' désinstalle le remplacement d'erreur = c'est recommandé
    Call RestoreHandlerGPF
End Sub

Conclusion :


Ca ne fonctionne pas dans l'IDE, faut compiler le projet.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Klimero
Messages postés
73
Date d'inscription
lundi 2 avril 2001
Statut
Membre
Dernière intervention
12 janvier 2010
-
Oui, sauf que c'est le caractère imprévu des erreurs non gérées qui fait qu'elles ne le sont pas :D
Philippe734
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1 -
à Klimero : contrôler ce type d'erreur est destiné aux experts. Il est préférable de prévoir les risques pour mieux les gérés lorsqu'ils apparaitront.
cs_Klimero
Messages postés
73
Date d'inscription
lundi 2 avril 2001
Statut
Membre
Dernière intervention
12 janvier 2010
-
Au fait, c'est pas un peu dangereux de poursuivre l'exécution d'un programme alors qu'il y a eu une telle exception ? Ne risque-t-on pas d'altérer la mémoire et de provoquer un crash plus grave (genre blue screen) ?
cs_Klimero
Messages postés
73
Date d'inscription
lundi 2 avril 2001
Statut
Membre
Dernière intervention
12 janvier 2010
-
Cool ^^
Philippe734
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1 -
à Klimero : oui, c'est ça.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.