基于MFC使用sendmessage实现简单进程间通信

        使用sendmessage在获取另外一个进程的窗口名称,点击按键将自定义数据进行发送,在接收进程中进行显示

        话不多说代码如下:

        发送部分代码:

void CYourself::OnBnClickedButton2() // (测试发送)
{
	 TODO: 在此添加控件通知处理程序代码
	CString strLine = "nihao nihao nihao";
	COPYDATASTRUCT cds;
	cds.dwData = 3;  // 用户自定义的消息标识随意进行更改与接收方保持一致即可
	cds.cbData = (DWORD)(strLine.GetLength() + 1) * sizeof(TCHAR);
	cds.lpData = (PVOID)(LPCTSTR)strLine;

	// 查找接收方窗口句柄,替换为接收方的窗口句柄
	HWND hwndReceiver = ::FindWindow(NULL, _T("jieshoushujujinchengchuangkoumingcheng"));

	if (hwndReceiver){
		// 发送消息
		::SendMessage(hwndReceiver, WM_COPYDATA, (WPARAM)NULL, (LPARAM)&cds);
	}
	else
	{
		AfxMessageBox(_T("接收方应用程序未找到!"));
	}
    
}

        接收方代码:

public:
    afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);


BEGIN_MESSAGE_MAP(CchildVSPCDlg, CDialogEx)
	ON_WM_COPYDATA()
END_MESSAGE_MAP()


BOOL CchildVSPCDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
	if (pCopyDataStruct->dwData == 2) // 自定义消息标识
    {
        CString strData = (LPCTSTR)pCopyDataStruct->lpData;
	    m_ListBox_serial_socket.AddString(strData);
    }
	if (pCopyDataStruct->dwData == 3) // 自定义消息标识
	{
		CString strData2 = (LPCTSTR)pCopyDataStruct->lpData;
		m_ListBox_serial_socket.AddString(strData2);
	}
    return CDialogEx::OnCopyData(pWnd, pCopyDataStruct);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值