Цитата:
Сообщение от maxilam
...
Или, если быть точнее, как работать с классом L2ParamStack?
...
|
Я обычно работаю так:
Адреса процедур:
Код:
AdrL2StackCreate:=adrProc('core.dll','??0L2ParamStack@@QAE@H@Z');
AdrL2StackClear :=adrProc('core.dll','?Clear@L2ParamStack@@QAEXXZ');
AdrL2StackPushBack:=adrProc('core.dll','?PushBack@L2ParamStack@@QAEHPA_W@Z'); //freya ?PushBack@L2ParamStack@@QAEHPAG@Z
AdrL2StackTop :=adrProc('core.dll','?Top@L2ParamStack@@QAE_JXZ'); //?Top@L2ParamStack@@QAEPAXXZ
AdrL2StackFree :=adrProc('core.dll','??1L2ParamStack@@QAE@XZ');
Вызов:
Код:
procedure l2stackCreate; //создать стек параметров
asm
push ecx
mov ecx, UnKnown
push 0Ah
call AdrL2StackCreate
pop ecx
end;
procedure L2StackPushBack; //положить параметр в стек параметров
begin
asm
mov ecx,param
push ecx
mov ecx, UnKnown
call AdrL2StackPushBack
end;
...
Пример работы:
Код:
asm
call l2stackcreate
call l2stackclear
mov eax, ObjectID
mov param,eax
call L2StackPushBack
mov eax, 0
mov param,eax
call L2StackPushBack
call l2useItem
call l2stackfree
end;