INTERCEPTER DES APPELS DE METHODE (SURCHARGE DE VTABLE)

Signaler
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
-
Messages postés
16
Date d'inscription
samedi 27 mars 2010
Statut
Membre
Dernière intervention
30 décembre 2012
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42574-intercepter-des-appels-de-methode-surcharge-de-vtable

Messages postés
16
Date d'inscription
samedi 27 mars 2010
Statut
Membre
Dernière intervention
30 décembre 2012

Merci de votre reponse.
En fait, j'ai reussi a faire ca avec excel mais je voudrais savoir comment appeller la Method originale apres l'interception. Est ce que vous savez comment le faire ?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
pas le même espace mémoire... dangereux de jouer à ça avec une appli tierce
Messages postés
16
Date d'inscription
samedi 27 mars 2010
Statut
Membre
Dernière intervention
30 décembre 2012

J'ai essayé le code pour changer la Caption de l'application Excel lui mais ca ne marche pas.

J'ai passé le nombre 72 correspondant à la Propriéte Caption d'Excel que j'ai cherché dans le OLEViewer mais ca marche pas.

La function "OverrideCaption" ne semble pas s'executer.

Peut etre que je me suis trompé de numero de propriété .

Y a t-il quelqu'un qui puisse m'aider . Merci bcp.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
Pour les besoins que j'en ais, j'utilise pour surcharger :


Public Declare Function SetWindowTextW Lib "user32.dll" (ByVal hWnd As Long, ByVal lpString As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)

Public Function OverrideCaption(ByVal voObjPtr As Long, ByVal vsCaption As Long) As Long
Dim oForm As Form
'# On récupère un objet a partir du pointeur This (voir doc sur COM...)
CopyMemory oForm, voObjPtr, 4
'# On met a jour le caption.... via WM_SETTEXT
SetWindowTextW oForm.hWnd, vsCaption
'# On libère notre objet
CopyMemory oForm, 0&, 4
End Function


ainsi, visuellement, aucun changement notable... mais WM_SETTEXT est envoyé, désormais.
Afficher les 10 commentaires