SendMessage进程间简单通信问题

王朝vc·作者佚名  2006-01-09
宽屏版  字体: |||超大  

本例以两个VC Dialog application 为例用SendMessage进行两进程间简单通信:

主要API:FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName )

//通过进程名得到进程handle

SendMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0)

//The result of the message processing; its value depends on the message sent.

主程序 Server :其他均为默认.

MFC 建立一Dialog 应用程序,工程名字:Server

添加一Button控件command,并与之对应的函数OnCommand

在ServerDlg.h里添加自己的消息:#define WM_COMM WM_USER+10

函数 OnCommand 添加代码:

{

CString str="Client";

CWnd *pWnd=CWnd::FindWindow(NULL,str);

if(pWnd)

pWnd->SendMessage(WM_COMM,0,0);//通过SendMessage的后两个参数

//WPARAM wParam, LPARAM lParam传递信息

else MessageBox("FindWindow NULL");

}

MFC另 建立一Dialog 应用程序,工程名字:Client 在 其

OnInitDialog里最后添加代码SetWindowText("Client");

在Client.h里添加自己的消息:#define WM_COMM WM_USER+10

添加消息映射:

BEGIN_MESSAGE_MAP(CSenderDlg, CDialog)

//{{AFX_MSG_MAP(CSenderDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_MESSAGE(WM_COMM,OnSendMsg)//添加的自己的消息处理

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

给ClientDlg.cpp添加自己的消息处理函数OnSendMsg(WPARAM wParam, LPARAM lParam)

{

// wParam lParam既是要传递的信息

if(wParam==0 && lParam==0)

AfxMessageBox("HelloWorld!");

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有