请问两个程序之间如何通讯? 有两个程序 A , B ,在 B中想向 A 发送消息及资料 ,让 A 收到后做特定的事 ,请问该如何实做呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有很多种方式, 最简单的是利用WM_COPYDATA消息, 可看MSDN中, Inter-Process Communication http://topic.csdn.net/t/20001218/09/49550.html socket、消息管道、剪贴板、写文件等等 简单应用用WM_COPYDATA复杂的用内存映像 MSDN中列举了以下几种方法:Clipboard COM Dynamic Data Exchange (DDE) File Mapping Mailslots Pipes RPC Windows Sockets WM_COPYDATA Windows Sockets WM_COPYDATA基本上这两中方式是最好的 Clipboard COM Dynamic Data Exchange (DDE) File Mapping Mailslots Pipes RPC Windows Sockets WM_COPYDATA全面 发送端 CString strWindowTitle=_T("接收窗口的标题"); CString strDataToSend = _T("Hello"); LRESULT copyDataResult; CWnd *pOtherWnd=CWnd::FindWindow(NULL,strWindowTitle); if(pOtherWnd) { COPYDATASTRUCT cpd; cpd.dwData= 0; cpd.cbData=strDataToSend.GetLength(); cpd.lpData =(void*)strDataToSend.GetBuffer(cpd.cbData); copyDataResult=pOtherWnd->SendMessage(WM_COPYDATA,(WPARAM)AfxGetApp()->m_pMainWnd->GetSafeHwnd(),(LPARAM)&cpd); strDataToSend.ReleaseBuffer(); } else { AfxMessageBox("Unable to find other app."); } } 接收端: //消息映射函数 BEGIN_MESSAGE_MAP(CMyWnd, CWnd) //{{AFX_MSG_MAP(CMyWnd) ... ON_WM_COPYDATA() ... //}}AFX_MSG_MAP END_MESSAGE_MAP() BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData); AfxMessageBox(strRecievedText); return CMyWnd::OnCopyData(pWnd, pCopyDataStruct); } 50分!树形控件求助 TCP的多点连接 刷分器的问题。 HANDLE 问题 问:主对话话框的控制问题。 如何将一个字符串中的字符例如12345中的34换成abc,使用CString类,谢谢,立刻给分 如何通过CString 给char str[20]赋值呢 一个简单的问题!请帮帮我 !新手^____^ 这是可以获得磁盘标卷的C++/C的代码,求讲解,求注释! 关于控件变量的问题。 有关获得listbox选项值的问题 什么是静态属性
复杂的用内存映像
Clipboard
COM
Dynamic Data Exchange (DDE)
File Mapping
Mailslots
Pipes
RPC
Windows Sockets
WM_COPYDATA
WM_COPYDATA
基本上这两中方式是最好的
COM
Dynamic Data Exchange (DDE)
File Mapping
Mailslots
Pipes
RPC
Windows Sockets
WM_COPYDATA
全面
CString strWindowTitle=_T("接收窗口的标题");
CString strDataToSend = _T("Hello");
LRESULT copyDataResult;
CWnd *pOtherWnd=CWnd::FindWindow(NULL,strWindowTitle);
if(pOtherWnd)
{
COPYDATASTRUCT cpd;
cpd.dwData= 0;
cpd.cbData=strDataToSend.GetLength();
cpd.lpData =(void*)strDataToSend.GetBuffer(cpd.cbData);
copyDataResult=pOtherWnd->SendMessage(WM_COPYDATA,(WPARAM)AfxGetApp()->m_pMainWnd->GetSafeHwnd(),(LPARAM)&cpd);
strDataToSend.ReleaseBuffer();
}
else
{
AfxMessageBox("Unable to find other app.");
}
}
接收端:
//消息映射函数
BEGIN_MESSAGE_MAP(CMyWnd, CWnd)
//{{AFX_MSG_MAP(CMyWnd)
...
ON_WM_COPYDATA()
...
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData);
AfxMessageBox(strRecievedText);
return CMyWnd::OnCopyData(pWnd, pCopyDataStruct);
}