Вверх ↑
Ответов: 2059
Рейтинг: 131
#1: 2018-12-03 19:35:12 ЛС | профиль | цитата
Rysik, копай в эту сторону:
interface

uses kol, Share, Debug;
type
TCallbackProcess = packed record
POPEDX: Byte;
MOVEAX: Byte;
SelfPtr: Pointer;
PUSHEAX: Byte;
PUSHEDX: Byte;
JMP: Byte;
JmpOffset: Integer;
end;
type
....
Callback: TCallbackProcess;
private
......
public
.....
constructor Create;
destructor Destroy; override;
end;

implementation

constructor THiAsmClass.Create;
begin
inherited Create;
Callback.POPEDX := $5A;
Callback.MOVEAX := $B8;
Callback.SelfPtr :=Self;
Callback.PUSHEAX := $50;
Callback.PUSHEDX := $52;
Callback.JMP := $E9;
Callback.JmpOffset := Integer(@TTHiAsmClass.doInit) - Integer(@Callback.JMP) - 5;
end;
destructor THiAsmClass.Destroy;
begin
inherited
end;

procedure THiAsmClass.doInit; stdcall;

begin
//
end;

end.
http://delphimaster.net/view/15-1391169590/all
http://programmerz.ru/questions/155014/how-to-pass-a-method-as-callback-to-a-windows-api-call-follow-up-question.html
P.S.
и даже если переношу прям 1 в 1 функцию

Это зря.
Поэтому и
не работает, для кода требуется ProcID и DriverHandle.

Обрати внимание на:
unit himy;
....
type
THImy = class(TDebug)
....
implementation

procedure THImy._work_doXXX;
.....
карма: 6

0
Редактировалось 5 раз(а), последний 2018-12-03 22:57:53