unit Unitmain2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const WM_DATA = WM_USER+1024; type pShareMem = ^TShareMem; TShareMem = record Data:array[0..255] of char; end; TMyForm = class(TForm) Edit1: TEdit; Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure getShareinfo(Var Msg:TMessage);message WM_DATA; end;var MyForm: TMyForm; pShare:PShareMem; MapHandle:THandle;
implementation{$R *.dfm}procedure TMyForm.getShareinfo(Var Msg:TMessage); begin if Msg.LParam=1 then begin edit1.Text:=''; edit1.Text:=PShare^.Data; end; end;procedure TMyForm.FormCreate(Sender: TObject); begin MapHandle:=OpenFileMapping( FILE_MAP_WRITE,//获取完全访问映像文件 False,//以后创建的子进程不可继承 pchar('Map Name')); if MapHandle=0 then begin application.MessageBox('定位内存映像文件块失败!',pchar(application.Title),MB_OK); Halt; end; PShare:=PShareMem(MapViewOfFile(MapHandle,FILE_MAP_ALL_ACCESS,0,0,0)); if PShare=nil then begin CloseHandle(MapHandle); application.MessageBox('创建文件视图失败!',pchar(application.Title),MB_OK); application.Terminate; exit; end; FillChar(PShare^,SizeOf(TShareMem),0);//初始化共享内存中的数据为0 end;procedure TMyForm.FormClose(Sender: TObject; var Action: TCloseAction); begin CloseHandle(MapHandle); end;procedure TMyForm.Button1Click(Sender: TObject); begin CloseHandle(MapHandle); close end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
WM_DATA = WM_USER+1024;
type
pShareMem = ^TShareMem;
TShareMem = record
Data:array[0..255] of char;
end;
TMyForm = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure getShareinfo(Var Msg:TMessage);message WM_DATA;
end;var
MyForm: TMyForm;
pShare:PShareMem;
MapHandle:THandle;
implementation{$R *.dfm}procedure TMyForm.getShareinfo(Var Msg:TMessage);
begin
if Msg.LParam=1 then
begin
edit1.Text:='';
edit1.Text:=PShare^.Data;
end;
end;procedure TMyForm.FormCreate(Sender: TObject);
begin
MapHandle:=OpenFileMapping(
FILE_MAP_WRITE,//获取完全访问映像文件
False,//以后创建的子进程不可继承
pchar('Map Name'));
if MapHandle=0 then
begin
application.MessageBox('定位内存映像文件块失败!',pchar(application.Title),MB_OK);
Halt;
end; PShare:=PShareMem(MapViewOfFile(MapHandle,FILE_MAP_ALL_ACCESS,0,0,0));
if PShare=nil then
begin
CloseHandle(MapHandle);
application.MessageBox('创建文件视图失败!',pchar(application.Title),MB_OK);
application.Terminate;
exit;
end;
FillChar(PShare^,SizeOf(TShareMem),0);//初始化共享内存中的数据为0
end;procedure TMyForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseHandle(MapHandle);
end;procedure TMyForm.Button1Click(Sender: TObject);
begin
CloseHandle(MapHandle);
close
end;end.