WM_COPYDATA 消息发送失败

cyclejdm 2013-08-23 05:50:40


CWndCMDMSG msg;

COPYDATASTRUCT stCpy;
stCpy.dwData = 0;
stCpy.cbData = sizeof(CWndCMDMSG);
stCpy.lpData = &msg;
LRESULT lr = ::SendMessage(hWnd,WM_COPYDATA,NULL,(LPARAM)&stCpy);



hWnd 参数正确 ;SendMessage执行后立即返回,目标进程没有收到消息,GetLastError()返回 0,这是什么问题呢?
...全文
350 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyclejdm 2013-08-28
  • 打赏
  • 举报
回复
只把SendMessage这一行改成
SendMessage(hWnd,WM_COPYDATA,0,(LPARAM)&stCpy);
这样就能正确发送了,其他什么都没变 环境是xp+vc6,win32 application项目
schlafenhamster 2013-08-28
  • 打赏
  • 举报
回复
你这样写 SendMessage(hWnd,WM_COPYDATA,0,(LPARAM)&stCpy); 其实就是: LRESULT lr = ::SendMessage(hWnd,WM_COPYDATA,NULL,(LPARAM)&stCpy); 你再试试: 1. LRESULT lr = ::SendMessage(hWnd,WM_COPYDATA,0,(LPARAM)&stCpy); 2. ::SendMessage(hWnd,WM_COPYDATA,0,(LPARAM)&stCpy);
zgl7903 2013-08-26
  • 打赏
  • 举报
回复
SPY++ 监视一下消息流程
xiaohuh421 2013-08-26
  • 打赏
  • 举报
回复
1. 写程序测试窗口句柄是否正确. 2. 如果是win7系统, 请使用管理员方式运行, 否则需要在目标程序中加入ChangeWindowMessageFilter调用来允许此消息.
halleyzhang3 2013-08-24
  • 打赏
  • 举报
回复
是不是WIN7啊?貌似Win7在不同进程的窗口间发送消息有很多限制
schlafenhamster 2013-08-24
  • 打赏
  • 举报
回复
目标窗口“ 干嘛要响应 WM_COPYDATA ?他 可以 不 响应 (多数 窗口 不 响应)
曾有一个人 2013-08-24
  • 打赏
  • 举报
回复
目标窗口有对WM_COPYDATA进行响应吗,然后没有进入OnCopyData()吗? 如果是,那么你的hWnd应该错了
cyclejdm 2013-08-23
  • 打赏
  • 举报
回复
引用 1 楼 fishion 的回复:
MSDN上的例子也差不多,就是第三个参数填入了当前窗口
应该不是第三个参数的问题吧?
cyclejdm 2013-08-23
  • 打赏
  • 举报
回复
引用 2 楼 VisualEleven 的回复:
窗口句柄指定的正确?
用FindWindow找到的窗口 IsWindow返回True
Eleven 2013-08-23
  • 打赏
  • 举报
回复
窗口句柄指定的正确?
fishion 2013-08-23
  • 打赏
  • 举报
回复
MSDN上的例子也差不多,就是第三个参数填入了当前窗口

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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