如题

解决方案 »

  1.   

    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.