首页 > 代码库 > 利用内存映射文件在两个进程间共享数据 转
利用内存映射文件在两个进程间共享数据 转
private hMapFile: THandle; MapFilePointer: Pointer; public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);begin hMapFile := CreateFileMapping ( $FFFFFFFF, // 特殊内存映射句柄 nil, page_ReadWrite, 0,10000, ‘DdhDemoMappedFile‘); // 文件名 if hMapFile <> 0 then MapFilePointer := MapViewOfFile ( hMapFile, // 上面映象文件的句柄 File_Map_All_Access, 0, 0, 0) // 访问整个映象文件 else ShowMessage (‘hMapFile = 0‘); if MapFilePointer = nil then ShowMessage (‘MapFilePointer = nil‘);end;procedure TForm1.BtnWriteClick(Sender: TObject);begin StrCopy (PChar (MapFilePointer), PChar (EditWrite.Text));//把内容写入共享内存end;procedure TForm1.BtnReadClick(Sender: TObject);var S: string;begin S := PChar (MapFilePointer);//从共享内存读出内容 EditRead.Text := S;end;
用这种方法,不但可以在不同的程序之间共享数据,还可以
在同一程序的不同实例间共享数据。为了及时通知其它进程
共享数据的变化,可以自定义一条用户消息,通过发消息来
实现。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。