主窗口上包含两个Button ,一个输入Edit1,一个提示Label.
procedure TfrmSendMsg.Button1Click(Sender: TObject);
var
Win:HWND;
Post:Pointer;
pStr:PShortString;
Str:String;
begin
Str:=Edit1.Text;
MapHandle:=CreateFileMapping(DWord(-1),nil,PAGE_READWRITE,0,250,'summer');
if (MapHandle>0) then
begin
Post:=MapViewOfFile(MapHandle,FILE_MAP_WRITE,0,0,0);
pStr:=Post;
pStr^:=Str; //写共享内存
end;
Win:=FindWindow('TfrmRecvMsg',nil);
If Win>0 then
Begin
PostMessage(Win,WM_USER+100,0,0); //发消息给接收程序的主窗口...
Edit1.SetFocus;
Label2.Caption:='发送完成!';
end
Else
Begin
Label2.Caption:='接收器没有运行!';
end;
end;
type
TfrmRecvMsg = class(TForm)
Memo1: TMemo;
Label1: TLabel;
private
procedure GetMsg(var Msg: TMessage);Message WM_USER+100; //在这里增加接收的过程
{ Private declarations }
public
{ Public declarations }
end;
var
frmRecvMsg: TfrmRecvMsg;
implementation
{$R *.DFM}
{ TfrmRecvMsg }
procedure TfrmRecvMsg.GetMsg(var Msg: TMessage);
var
MapHandle:THandle;
pStr:Pointer;
Str:String;
begin
MapHandle:=CreateFileMapping(DWord(-1),nil,PAGE_READWRITE,0,255,'summer');
if (MapHandle>0) then
begin
pStr:=MapViewOfFile(MapHandle,FILE_MAP_READ,0,0,10); //得到共享内存的指针
Memo1.Lines.Add('收到一条消息!!');
Memo1.Lines.Add(Pchar(pStr));
end;
CloseHandle(MapHandle);
end;
procedure TFormTest.WndProc(var Message: TMessage);
var h : integer;
begin
with Message do
case Msg of
ASKABORT_ALL :begin
//此处进行该消息的处理;
//............
//下面返回对方程序
h := findwindow('TForm1','xxx');
SendMessage(agent_Handle, ABORTALL_OK, 0,0);
end;
//*****************************************
end;
inherited WndProc(Message);
end;