一个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;
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;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货