Module pour remplacer l erreur critique de protection generale

5/5 (15 avis)

Vue 4 617 fois - Téléchargée 325 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
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 juil. 2010 à 07:26
tres sympa...

NewExceptionHandler n'a pa besoin d'etre en Public
te reste plus qu'a afficher le cadre de la pile...

"Ne fonctionne pas dans l'IDE"
=> testes si tu es dans l'IDE ou non et rend "sterile l'appel a ton module"

ceci:
http://blogs.codes-sources.com/ebartsoft/archive/2004/03/04/777.aspx

pourrais t'interesser... ainsi que:
http://www.vbfrance.com/codes/GERER-EXCEPTION-ERREUR-DIRECT_20789.aspx

http://files.codes-sources.com/fichier.aspx?id=20789&f=frmExc.frm

sympathique API s'il en est...
je vais surement l'integrer dans mes sources.
chieur Messages postés 67 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 27 mai 2009
13 juil. 2010 à 07:32
on error resume next = pa se casser la tete loool
pas mal nan ? :P
tant ke y aura v y aura b
bonne journee phil un 10 :)
chieur Messages postés 67 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 27 mai 2009
13 juil. 2010 à 07:33
t1 reinfield pensais etre le premier a placer mon com :P rate ! bonjour toi !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 juil. 2010 à 08:44
Resume Next n'est pas une solution a tout...

que cela ne plante pas, c'est bien, résoudre l'erreur, c'est souvent mieux.
avec un On Error Goto et le traitement adéquat (Log, remontee de la pile des appels etc, ca devient interessant ; crucial pour de gros projets.)

bien sur, il ya des soucis de conception de VB qui empechent de faire autrement que d'executer du code en attendant un err.raise, m'enfin... quand on peux tester les parametres de manière a ce que cela ne plante pas.
chieur Messages postés 67 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 27 mai 2009
13 juil. 2010 à 08:51
reinfield t assez bien place pour savoir ke kan ca bug ca bug ! loll on tjr les memes bugs Microsofiellement parlant ...
jette la gestion d'erreur dans msn 2011 mdrr lamentable!
rey_sublasser de toi je l'ai su ke y a kk jours !
utilisai pendant un bail ds mes sources
t un bon gars un vieu programmeur c tout :)
sinon si ta des solution pour gerer l'insolvabilite des clients fais moi signe lol
@ tte !
PS: ct une blague le on error resume next ... mai kan pa le temps et ke tu code com a la chech kebab pa le choix ! c la verite
experience murphyienne oci .. mai un pe tard voir mon age .. la beaute de linterface va avant l'algo et lintelligence ke ta mis dans le code .. g des codes ki depassaient de loin en operabilite beaute rapidite etc mai ce ke g perdu en temp et tune en dev eux a piker des opens sources et a faire du marketing :P
un peu vieu oci et aime pa le framework mai vu meilleur gestion d'erreur sous .net ..
allez bonne journee les amis

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.