Hallo ,
Ik heb ff gekeken naar het filemapping
en het volgende heb ik
Form die data moet versturen ,
//////////////////////////////////////////////////////////////////////////////////////////////////////
Code:
const MSG_REPLY = WM_USER + 4040;
MSG_RESCODE = WM_USER + 4041;
MSG_CODE = WM_USER + 4042;
MSG_FILENAME = WM_USER + 4043;
MSG_TERMINATE = WM_USER + 4044;
MSG_ACCEPT = WM_USER + 4045;
const TheMappingConstant = 'mapping web editor';
const msgClassName = 'TStyleSheetEd';
msgName = 'Style Sheet Editor';
Code:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,idMessage, StdCtrls, Spin;
type
TdlgTest = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
function ObtainMappingHandle : Thandle;
private
LengteInfo:Cardinal;
MapHandle : THandle;
public
end;
var
dlgTest: TdlgTest;
implementation
{$R *.dfm}
function TDlgTest.ObtainMappingHandle : Thandle;
begin
LengteInfo := 4048;
Result := CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,LengteInfo,TheMappingConstant);
if Result <> 0 then
begin
if GetLastError = ERROR_ALREADY_EXISTS then
begin
CloseHandle(Result);
Result := OpenFileMapping(FILE_MAP_WRITE,False,TheMappingConstant);
end;
end;
end;
procedure TdlgTest.Button1Click(Sender: TObject);
var h:Hwnd;
begin
h := findwindow(msgClassName,msgName);
SendMessage(H,MSG_REPLY, 0, DWord(pchar('moi')));
end;
procedure TdlgTest.FormCreate(Sender: TObject);
begin
MapHandle := ObtainMappingHandle;
end;
procedure TdlgTest.FormDestroy(Sender: TObject);
begin
CloseHandle(MapHandle);
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////
En de andere form soort gelijke.
Code:
procedure TStyleSheetEd.MsgReply(var msg: TMessage);
var txt: PChar;
P_Info:Pointer;
begin
if MapHandle <> 0 then
begin
P_Info := MapViewOfFile(MapHandle,FILE_MAP_WRITE,0,0,0);
txt := P_Info;
ShowMessage(txt);
unmapViewOfFile(P_Info);
end else beep;
end;
function TStyleSheetEd.ObtainMappingHandle : Thandle;
begin
Lengteinfo := 4048;
Result := CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,LengteInfo,TheMappingConstant);
if Result <> 0 then
begin
if GetLastError = ERROR_ALREADY_EXISTS then
begin
CloseHandle(Result);
Result := OpenFileMapping(FILE_MAP_WRITE,False,TheMappingConstant);
end;
end;
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////
Zoals met de MsgReply gaat wel ok ,
maar hoe schrijf en lees ik dat weg/in met behulp van de filemapping?
Lengteinfo heb ik maar een bepaalde waarde gegeven , of dat juist is weet ik niet.
en P_Info ben ik maar vanuit gegaan dat een pointer is.
Maar ben met filemapping nog nie zo bekend en de help word ik nie veel wijzer uit.
Groeten Kuntao
Bookmarks