type
Tmapinfo=record
info1:integer;
info2:string[255];
end;
var mapinfo:Tmapinfoprocedure TForm1.Button1Click(Sender: TObject);
var
hmap:=Thandle;
pinfo:point;
begin
mapinfo.info1:=1;
mapinfo.info2:='abc';
hMap := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE or SEC_COMMIT,
0, MapSize, 'mapfilename');
pinfo:=mapviewoffile(hMap,FILE_MAP_ALL_ACCESS,0,0,MapSize);end;建立“映射文件”之后,如何在另外一个程序中写入mapinfo(若写入的数据已经在文件中,则提示错误!)
,如何取得“映射文件”里面的最后一笔数据?谢谢大家!
Tmapinfo=record
info1:integer;
info2:string[255];
end;
var mapinfo:Tmapinfoprocedure TForm1.Button1Click(Sender: TObject);
var
hmap:=Thandle;
pinfo:point;
begin
mapinfo.info1:=1;
mapinfo.info2:='abc';
hMap := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE or SEC_COMMIT,
0, MapSize, 'mapfilename');
pinfo:=mapviewoffile(hMap,FILE_MAP_ALL_ACCESS,0,0,MapSize);end;建立“映射文件”之后,如何在另外一个程序中写入mapinfo(若写入的数据已经在文件中,则提示错误!)
,如何取得“映射文件”里面的最后一笔数据?谢谢大家!
我想把他们之间的通讯方式改成“内存共享”,那我该如何做呢?
1.程序A在内存读出数据保存为硬盘文件之后再做“映射文件”,程序B读取“映射文件”中的内容
2.程序A在内存读出数据之后并不在硬盘生成文件,而是直接做“映射文件”,程序B读取“映射文件”中的内容
请问,我应采取哪个方案,谢谢!
先启动的程序创建,后启动的程序发现如果存在了则直接映射就可以了。两个程序就象使用自己内存一样使用映射,只是在做完操作后通知另一个程序就可以了。建议看一下《WINDOWS核心编程》一书。