Script: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;
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.