</pre><pre code_snippet_id="1604208" snippet_file_name="blog_20160310_2_6939195" name="code" class="cpp">发送端:
void CPlay::Mp4()
{
//CreateProcess(_T("\\Flashdrv Storage\\Mp4\\Mp4.exe"), NULL, NULL, NULL, FALSE, 0, NULL, NULL, NULL, NULL);
UpdateData();
HWND m_Mp4Wnd;
m_Mp4Wnd = ::FindWindow(NULL, WND_VIDEO_NAME);
CString strPatrh = _T("\\Storage Card\\Movies\\重庆璧山2011新宣传片.3gp");
if (m_Mp4Wnd)
{
UCHAR ucMsg[256];
memset(ucMsg, 0, sizeof(ucMsg));
memcpy(ucMsg, strPatrh.GetBuffer(strPatrh.GetLength()), strPatrh.GetLength()*2);
ucMsg[strPatrh.GetLength()*2] = 0x00;
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = strPatrh.GetLength()*2;
//cpd.lpData = (PVOID)strPatrh.GetBuffer(cpd.cbData);
cpd.lpData = (PVOID)ucMsg;
// cpd.cbData = wcslen(buf)*sizeof(wchar_t) + 2;
// cpd.lpData = (PVOID)buf;
::SendMessage(m_Mp4Wnd, WM_COPYDATA, NULL, (LPARAM)&cpd);
}
}
接收端:
BOOL CPlay::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
// TODO: Add your message handler code here and/or call default
CString lpn,lpt;
UCHAR GetCmdLine[256];
int iBufferOutLen; //收到的字符长度
//pcds=reinterpret_cast <COPYDATASTRUCT*> (Msg.LParam);
memset(GetCmdLine, 0, 256);
memcpy(GetCmdLine, (LPSTR)(pCopyDataStruct->lpData), (pCopyDataStruct->cbData));//收到的字符
iBufferOutLen = pCopyDataStruct->cbData-1; //收到的字符数-1
lpn= _T("");
lpn.Format(_T("%s"),GetCmdLine);
//MessageBox(lpn);/*利用对话框表示收到消息*/
m_strMediaFile = lpn;
if ( GetFileAttributes(m_strMediaFile) == 0xFFFFFFFF )
{
return FALSE;
}
else
{
OnClickStaticMovie();
OnButtonPlay();
}
::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, DLG_WIDTH, DLG_HIGHT, SWP_SHOWWINDOW); //置顶显示
return CDialogBase::OnCopyData(pWnd, pCopyDataStruct);
}
//普通数据
//发送端
void SendData()
{
UCHAR temp[16] = {0x31, 0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x30};
HWND m_hWnd;
m_hWnd = ::FindWindow(NULL, _T("WND_GNSSTERMINAL"));
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = strlen((PCSTR)temp);
cpd.lpData = (PVOID)temp;
::SendMessage(m_hWnd, WM_COPYDATA, NULL, (LPARAM)&cpd);
}
//接收端
BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
// TODO: Add your message handler code here and/or call default
CString lpn,lpt;
UCHAR GetCmdLine[256];
int iBufferOutLen; //收到的字符长度
memset(GetCmdLine, 0, 256);
memcpy(GetCmdLine, (LPSTR)(pCopyDataStruct->lpData), (pCopyDataStruct->cbData));//收到的字符
CString str = _T("");
str.Format(_T("%s"), GetCmdLine);
OutputDebugString(str);
AfxMessageBox( str );
return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}