CreateFileMapping,SendMessage,XMLDocument
服务器端:
.h
//---------------------------------------------------------------------------
#ifndef NetServerH
#define NetServerH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "NetEventDetect.h"
#include <msxmldom.hpp>
#include <XMLDoc.hpp>
#include <xmldom.hpp>
#include <XMLIntf.hpp>
#define WM_MYMESSAGE WM_USER+1
# define WM_DATACOMING WM_USER+100
//---------------------------------------------------------------------------
class TNetSend : public TForm
{
__published: // IDE-managed Components
private: // User declarations
COPYDATASTRUCT scds;
public: // User declarations
__fastcall TNetSend(TComponent* Owner);
protected:
virtual void _fastcall WMUser(TMessage &Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_MYMESSAGE,TMessage,WMUser)
END_MESSAGE_MAP(TForm);
};
//---------------------------------------------------------------------------
extern PACKAGE TNetSend *NetSend;
//---------------------------------------------------------------------------
#endif
.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "NetServer.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TNetSend *NetSend;
//---------------------------------------------------------------------------
__fastcall TNetSend::TNetSend(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TNetSend::WMUser(TMessage &Msg)
{
int hFile = FileOpen("NetworkEvent.xml",fmOpenRead);
int FileLength = FileSeek(hFile,0,2);
HANDLE hFilemap=CreateFileMapping((HANDLE)0xFFFFFFFF, //共享文件为文件句柄,共享内存为(HANDLE)0xFFFFFFFF
NULL, //文件映象的安全属性结构,一般为NULL
PAGE_READWRITE, //文件视图的保护类型
0, //高32位
FileLength, //低32位
"SHARED"); //映像名
//返回文件映象的句柄
LPVOID pVoid=MapViewOfFile(hFilemap,FILE_MAP_ALL_ACCESS,0,0,0);//返回数据映射的起始地址
FileSeek(hFile,0,0);
char* pszBuffer = new char[FileLength+1];
FileRead(hFile,pszBuffer,FileLength);
FileClose(hFile);
memset(pVoid,0,FileLength);
strcpy((char *)pVoid,pszBuffer); //Returns a pointer to psz1
HANDLE hDes=FindWindow("TNetInspector","网络事件探测器"); // 对象窗口的名称
SendMessage(hDes, WM_DATACOMING,(WPARAM)FileLength,0);
CloseHandle(hFilemap);
UnmapViewOfFile(pVoid);
}
//----------------------------------------------------------------------------