uses
Windows,
SysUtils,
Dialogs,
Classes;
var
hObjData : THandle;
PData : Pointer;{$R *.RES}procedure UnmapData;//释放文件映射对象
begin
if Assigned(PData) then
begin
UnmapViewOfFile(PData);
PData := nil;
end;
end;procedure MapData;//创建文件映射对象,建立映射关系
begin
hObjData := CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,$400,PChar('_ShareData)'));
if hObjData=0 then
Raise Exception.Create('创建文件映射对象没有成功!');
PData := MapViewOfFile(hObjData,FILE_MAP_WRITE,0,0,1);
if not Assigned(PData) then
begin
UnmapData;
Raise Exception.Create('建立映射关系没有成功!');
end;
end;
procedure DLLMain(dwReason:DWORD);
begin
Case dwReason of
DLL_PROCESS_ATTACH:
begin
PData := nil;
hObjData := 0;
MapData;
end;
DLL_PROCESS_DETACH:
begin
UnmapData;
end;
end;
end;function GetPointerOfData : Pointer;Stdcall;
begin
Result := PData;
end;Exports
GetPointerOfData,begin
DLLProc := @DLLMain;
DLLMain(DLL_PROCESS_ATTACH);
end.
谢谢你回答我的问题!
你还在吗,我试了一下,是一个DLL但我不知怎么来传递数据,请您把A,B程序
也传过来好吗?如果可以一定给分