What's the signature of message method?

What's the signature of message method?
I want to hook WMActivate using Delphi detours library.

But this cannot compile:
var
TrampolineTFormWMActivate: procedure(var Message: TWMActivate);
message WM_ACTIVATE;

Comments

  1. var
    TrampolineTFormWMActivate: procedure(var Msg: TWMActivate) of object;

    ReplyDelete
  2. Here is an example :
    //--------------------------------------
    uses DDetours;

    type
    TTrampolineWMActivate = procedure(Control: TControl; var Message: TWMActivate);
    TCustomFormHack = type TCustomForm;

    var
    TrampolineWMActivate: TTrampolineWMActivate = nil;

    procedure WMActivateHook(Control: TControl; var Message: TWMActivate);
    const
    Bit2Bool: array [Boolean] of string = ('False', 'True');
    begin
    Main.Caption := Format('WMActivate(%s).Active=%s', [Control.Name, Bit2Bool[Message.Active <> WA_INACTIVE]]);
    TrampolineWMActivate(Control, Message);
    end;

    procedure TMain.FormCreate(Sender: TObject);
    begin
    @TrampolineWMActivate := InterceptCreate(@TCustomFormHack.WMActivate, @WMActivateHook);
    end;

    ReplyDelete

Post a Comment