分享

SendMessage进程间简单通信问题

 guoliyan1 2012-02-05
SendMessage进程间简单通信问题
发布于:软件开发网 来源:互联网 作者:佚名 时间:2009-02-26 00:02


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

主要API:FindWindow(LPCTSTRlpClassName, LPCTSTRlpWindowName )

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

SendMessage(UINTmessage,WPARAMwParam=0,LPARAMlParam=0)

//Theresultofthemessageprocessing;itsvaluedependsonthemessagesent.

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

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

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

在ServerDlg.h里添加自己的消息:#defineWM_COMMWM_USER 10

函数OnCommand添加代码:

{

CStringstr="Client";
CWnd*pWnd=CWnd::FindWindow(NULL,str);
if(pWnd)
pWnd->SendMessage(WM_COMM,0,0);//通过SendMessage的后两个参数

//WPARAMwParam,LPARAMlParam传递信息
elseMessageBox("FindWindowNULL");

}

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

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

在Client.h里添加自己的消息:#defineWM_COMMWM_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(WPARAMwParam,LPARAMlParam)

{

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

if(wParam==0&&lParam==0)
AfxMessageBox("HelloWorld!");

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多