进程间用WM_COPYDATA进行通信,怎么没反应?

oyljerry 2004-08-02 09:24:34
我在客户端的“传递消息”按钮程序中的代码如下:
void CCSocketcliDlg::OnCopydata()
{
// TODO: Add your control notification handler code here
COPYDATASTRUCT cds;
char *str="this is visual c++!";
cds.dwData=8888;
cds.lpData=str;
cds.cbData=lstrlen(str)+1;
CWnd *hWnd=NULL;
hWnd=CWnd::FindWindow(NULL,"Receiver"); //另外进程的窗口名称
BOOL Result=hWnd->SendMessage(WM_COPYDATA,(WPARAM)(HWND)this->m_hWnd,(LPARAM)(PCOPYDATASTRUCT)&cds);
if (Result)
{
AfxMessageBox("SUCCESS!");
}

}
在另一个服务端程序中添加了COPYDATA的消息函数:
BOOL CCSocketDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
我先启动了服务端程序,然后启动客户端程序,可我点击“传递消息”按钮后,程序没什么反应,也没有弹出“success”的对话框?这是什么原因呢??
...全文
422 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lion1900 2004-08-05
  • 打赏
  • 举报
回复
你的程序SendMessage以后就返回了,因为这个消息进入了消息队列。
所以返回值并不能说明什么
在另一个服务端程序中添加了COPYDATA的消息函数:
BOOL CCSocketDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
//在这个地方输出你接收到的数据。譬如
TRACE("%s\n", pCopyDataStruct->lpData);
AfxMessageBox(pCopyDataStruct->lpData);
return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
lion1900 2004-08-05
  • 打赏
  • 举报
回复
给你开玩笑的。
好,我帮你看看
oyljerry 2004-08-05
  • 打赏
  • 举报
回复
是不是把¥¥¥¥加到字符串前啊,加了还是没有反应啊??
oyljerry 2004-08-05
  • 打赏
  • 举报
回复
嗯,多谢lion1900(走路扶墙根,吐痰带血丝) ,现在服务端可以弹出对话框了,并显示了客户端的信息,客户端还是没有弹出“success”的对话框来,sendmessage不是要等待信息的返回吗?怎么会没有返回值呢?
lion1900 2004-08-04
  • 打赏
  • 举报
回复
数据包前头加几个¥¥¥¥,就保证什么都OK了
真的,不骗你
ShaftWhy 2004-08-03
  • 打赏
  • 举报
回复

::SendMessage(
(HWND) hWnd, // handle to destination window
WM_COPYDATA, // message to send
(WPARAM) wParam, // handle to window (HWND)
(LPARAM) lParam // data (PCOPYDATASTRUCT)
);
oyljerry 2004-08-03
  • 打赏
  • 举报
回复
我是在一个机子上试的!!
DentistryDoctor 2004-08-03
  • 打赏
  • 举报
回复
两个进程必须在同一机器上。
guxing 2004-08-02
  • 打赏
  • 举报
回复
应该是只能在本机传递

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧