Cet article montre comment utiliser une instance d'une classe comme un rappel.
Si vous vouliez un windows de rappel à appeler une instance d'une classe, il suffit de remplacer TMyClass avec votre nom de classe, et TMyClass.MyCallBack avec votre nom de la méthode.
type
& nbsp & nbsp TCallbackThunk = paniers enregistrement
& ! & ! & ! & nbsp POPEDX: Octet
& ! & ! & ! & nbsp MOVEAX: Octet
& ! & ! & ! & nbsp SelfPtr: Pointeur
& ! & ! & ! & nbsp PUSHEAX: Octet
& ! & ! & ! & nbsp PUSHEDX: Byte
& ! & ! & ! & nbsp JMP: Octet
& ! & ! & ! & nbsp JmpOffset: Integer
& nbsp & nbsp fin
var
& nbsp & nbsp Rappel: TCallbackThunk
begin
& nbsp & nbsp hérité de Créer
& nbsp & nbsp Rappel.POPEDX := $5A
& nbsp & nbsp Rappel.MOVEAX := $B8
& nbsp & nbsp Rappel.SelfPtr := Auto
& nbsp & nbsp Rappel.PUSHEAX := $50
& nbsp & nbsp Rappel.PUSHEDX := $52
& nbsp & nbsp Rappel.JMP := $E9
& nbsp & nbsp Rappel.JmpOffset := Integer(@TMyClass.MyCallBack) Entier(@Rappel.JMP) - 5
& nbsp & nbsp //Appel de la WINAPI ici, en passant @Rappel à la fonction de rappel proc, par exemple
& nbsp & nbsp EnumSystemLocales(TFNLocaleEnumProc(@Rappel), LCID_SUPPORTED)
fin
Rappel d'une classe
Rappel d'une classe : Plusieurs milliers de conseils pour vous faciliter la vie.
Cet article montre comment utiliser une instance d'une classe comme un rappel.
Si vous vouliez un windows de rappel a appeler une instance d'une classe, il suffit de remplacer TMyClass avec votre nom de classe, et TMyClass.MyCallBack avec votre nom de la methode.
type
& nbsp & nbsp TCallbackThunk = paniers enregistrement
& ! & ! & ! & nbsp POPEDX: Octet
& ! & ! & ! & nbsp MOVEAX: Octet
& ! & ! & ! & nbsp SelfPtr: Pointeur
& ! & ! & ! & nbsp PUSHEAX: Octet
& ! & ! & ! & nbsp PUSHEDX: Byte
& ! & ! & ! & nbsp JMP: Octet
& ! & ! & ! & nbsp JmpOffset: Integer
& nbsp & nbsp fin
var
& nbsp & nbsp Rappel: TCallbackThunk
begin
& nbsp & nbsp herite de Creer
& nbsp & nbsp Rappel.POPEDX := $5A
& nbsp & nbsp Rappel.MOVEAX := $B8
& nbsp & nbsp Rappel.SelfPtr := Auto
& nbsp & nbsp Rappel.PUSHEAX := $50
& nbsp & nbsp Rappel.PUSHEDX := $52
& nbsp & nbsp Rappel.JMP := $E9
& nbsp & nbsp Rappel.JmpOffset := Integer(@TMyClass.MyCallBack) Entier(@Rappel.JMP) - 5
& nbsp & nbsp //Appel de la WINAPI ici, en passant @Rappel a la fonction de rappel proc, par exemple
& nbsp & nbsp EnumSystemLocales(TFNLocaleEnumProc(@Rappel), LCID_SUPPORTED)
fin