| Код | unit SharedConsts;
interface uses windows; type pObj=^TObject; const FMname='kjrvfvuthvu_tfjudmwskxc8548655__934jd8fddjslk_zsdm94v4kre'; FMSize=64*1024; shdObject=0;shdAnotherSharedData=4;//и тд если надо var h:THANDLE;view:pointer;
function GetSharedData(offset:DWORD):pointer;
implementation
function GetSharedData(offset:DWORD):pointer; begin result:=pointer(DWORD(view)+offset) end;
end.
|
| Код | program prog; uses windows,SharedConsts; var lib:THANDLE; YourCoolObject:TObject; begin YourCoolObject:=TObject.Create; h:=CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,FMSize,FMname); view:=MapViewOfFile(h,FILE_MAP_WRITE,0,0,FMSize); if assigned(view) then pObj(GetSharedData(shdObject))^:=YourCoolObject; lib:=LoadLibrary('lib.dll'); UnmapViewOfFile(view); CloseHandle(h); if lib=0 then MessageBox(0,'!',nil,0) else begin //используешь библиотеку FreeLibrary(lib); YourCoolObject.Free; end; end.
|
| Код | library lib; uses windows,SharedConsts; var SomeExternalObject:TObject; s:string; begin view:=nil; h:=OpenFileMapping(FILE_MAP_WRITE,false,FMname); view:=MapViewOfFile(h,FILE_MAP_WRITE,0,0,FMSize); ExitCode:=integer(not assigned(view)); if not boolean(ExitCode) then begin SomeExternalObject:=PObj(GetSharedData(shdObject))^; UnmapViewOfFile(view); CloseHandle(h);
s:=SomeExternalObject.ClassName; //тут используешь MessageBox(0,PChar(s),'Класс объекта',MB_OK);//свой объект end; end.
|
|