procedure MyVirtualProc;
begin
ShowMessage('MyVirtualProc has been called');
end;
function MyVirtualFunc: ShortString;
begin
result := 'MyVirtualFunc';
end;
procedure TForm1.PaxScripter1LoadDll(Sender: TObject; const DllName,
ProcName: String; var Address: Pointer);
begin
if DllName = 'MyVirtualDll.dll' then
begin
if ProcName = 'MyVirtualProc' then
Address := @ MyVirtualProc
else if ProcName = 'MyVirtualFunc' then
Address := @ MyVirtualFunc;
end;
end;
Script:
program Demo; Function GetTickCount : Integer; stdcall; external 'kernel32.dll'; // "real" dll procedure MyVirtualProc; external 'MyVirtualDll.dll'; // "virtual" dll function MyVirtualFunc: ShortString; external 'MyVirtualDll.dll'; // "virtual" dll begin MyVirtualProc(); print MyVirtualFunc(); print GetTickCount(); end.