使用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);
}