发送接收消息
两个独立的程序,要求一个程序不断的发送消息,另一个程序不断的接收消息,如果接收不到了,告诉用户已停止发送!
求源码例子!
问题点数:100、回复次数:7Top
1 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2005-05-30 17:05:12 得分 10
是用socket吗?Top
2 楼thisisll(学习王高李,有个好身体)回复于 2005-05-30 17:12:30 得分 10
用钩子可以截获消息Top
3 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2005-05-30 17:18:28 得分 20
使用WM_COPYDATA.Top
4 楼krh2001(边城浪子)回复于 2005-05-30 17:25:16 得分 20
什么消息,传递什么我就不管了,如果仅仅是检测消息发送已经停止,那么可以使用一个定时器,每隔一定的时间对一个变量做加运算, 如,每100毫秒加一次,然后检测 这个变量,如果超过某一值,则说明已经好久没有接收到消息了, 这时就可以向用户报告了.每当招收到消息都要对这个计时变量做清除工作,即将其置0.Top
5 楼maruchun(小马过河)回复于 2005-05-31 12:25:29 得分 0
这是两个独立的程序。 麻烦给点源码,谢谢Top
6 楼laiyiling(陌生人[MVP])回复于 2005-05-31 12:35:10 得分 30
同意牙医,可以使用WM_COPYDATA消息实现进程间通信,参考:
CString str = _T( "Hello" );
HWND hWndReceived = FindWindow( "Receiver", NULL );
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = strDataToSend.GetLength();
cpd.pData = (void*)str.GetBuffer(cpd.cbData);
SendMessage( hWndReceived, WM_COPYDATA, 0, (LPARAM) & cpd );
str.ReleaseBuffer();
加入映射宏:
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);
return CMyWnd::OnCopyData(pWnd, pCopyDataStruct);
}Top
7 楼younggle(洋溢)回复于 2005-05-31 13:12:12 得分 10
使用SOCKET也很方便的啊。
使用SOCKET吧。Top




