发送WM_COPYDATA
COPYDATASTRUCT ds;
wchat_t callinfo=L"<Call_Type>1</Call_Type><Simul_Type>0</Simul_Type><Dest_ID>3103</Dest_ID>";
ds.cbData=lstrlen(callinfo)*2; //WCHAR数据,每个字符两个字节
ds.dwData=1; //这个自定义,可以通过这个告诉接受端,lpData是什么数据
ds.lpData=callinfo; //需要发送的数据指针
SendMessage(WM_COPYDATA,(WPARAM)this->m_hWnd,(LPARAM)(LPVOID)&ds);
处理WM_COPYDATA
OnCopyData(CWnd* pWnd, COPYDATASTRUCT* ds)
{
char* data=new char[ds->cbData+2]; //因为这里是字符串,多分配两个字节,处理结尾
if(data)
{
memset(data,0,ds->cbData+2); //清零
memcpy(data,ds->lpData,ds->cbData); //拷贝内存
}
else
{
AfxMessageBox(L"分配内存失败");
return 0;
}
BSTR bstrdata=SysAllocString(data);
// AfxMessageBox((LPCWSTR)data);
CComBSTR bstrDestAddress;
if(ds->dwData==1 || ds->dwData==10)//call 或者 Emergency call
{
SCFCALLAPPDATA scpd;
if(ds->dwData==1)
scpd.AppData[0].DataName=_T("1");
else
scpd.AppData[0].DataName=_T("10");
scpd.AppData[0].Data=bstrdata;
scpd.dwCount=1;
SCFCall(m_SCFHandle, bstrDestAddress, &scpd); //CALL
}
}