一个dll,一个写入端,一个接受端
 library jhdll_dpr;
uses
  SysUtils,
  Classes,
  forms,
  windows;var
 hMem:THandle;
{$R *.res}  function GetGlobalMem:THandle;export;
  begin
   result:=hMem;
  end; exports GetGlobalMem;
beginhMem:=GlobalAlloc(GMEM_ZEROINIT and gmem_MOVEABLE and gmem_DDEShare,512);
if hmem=0 then application.MessageBox('提示','无法申请内存空间') ;
end.
写入端:
var
  hMem: THandle;
  pMem: PChar;
begin
hMem:=0;
hMem := GetGlobalMem; {获得全局内存块的句柄}
if hMem <> 0 then
    begin
      showmessage(inttostr(hmem))  ;
      pMem := GlobalLock(hMem); {加锁全局内存块}
      if pMem <> nil then
      begin
        StrPCopy(pMem,edit1.text); {向全局内存块写入数据}
        GlobalUnlock(hMem); {解锁全局内存块}
      end
      else
      MessageDlg('Couldnot Lock memory block',mtWarning,[mbOK],0);    end;
  end;  
读出端程序:
var
  hMem: THandle;
  pMem: PChar;
hMem := GetGlobalMem; {获得全局内存块的句柄}
if hMem <> 0 then
begin
pMem := pchar(GlobalLock(hMem)); {加锁全局内存块}
if pMem <> nil then
begin
edit3.text := strpas(pMem); {从全局内存块读取数据}
GlobalUnlock(hMem); {解锁全局内存块}
end
else
MessageDlg('Couldnot Lock memory block',mtWarning,[mbOK],0); 
end;