C++之不同进程消息通信

     不同进程间消息传递可通过注册Windows消息和用户自定义消息实现:

      一. 注册Windows消息方式 

      1、定义消息
const UINT WM_MESSAGE_PROCESS = ::RegisterWindowMessage(_T("Message_Process")); // 接收方

const UINT WM_MESSAGE_PROCESS = ::RegisterWindowMessage(_T("Message_Process"));   // 发送方

      2、接收方消息映射
afx_msg LRESULT OnProcessMsg(WPARAM wparam, LPARAM lparam);

ON_REGISTERED_MESSAGE(WM_MESSAGE_PROCESS,OnProcessMsg)

       3、接收方消息处理
LRESULT CSunjianDlgTestDlg::OnProcessMsg(WPARAM wparam, LPARAM lparam)
{
if( 1 == wparam )
{
    CString strString = _T("接收到远程进程消息");
    MessageBox(strString);
}

    return 0;
}

       4、发送方消息发送
HWND hWnd = NULL;
hWnd = ::FindWindow(NULL,_T("SunjianDlgTest"));
::PostMessage(hWnd,WM_MESSAGE_PROCESS,1,2);

        不同进程间消息传递参数仅能传递简单参数,如整型数据等,诸如字符串、结构体复杂类型的数据,无法进行传递,因为两个进程使用不同的虚拟内存,所以数据无法传递,关于不同进程间数据传递问题,请参考转载的文章,大神给出详细解释http://blog.csdn.net/slj_win/article/details/40795159。


二、 用户自定义消息方式 
      按照用户自定义消息流程,接收方和发送方采用相同的消息值。

#define WM_USER_PROCESS WM_USER+1

      个人水平有限,不足之处请批评指正,欢迎交流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值