SendMessagede的第一个参数写HWND_BROADCAST是不是无效?

伏神 2008-11-13 04:22:41
MSDN上说SendMessage的第一个参数hWnd如果传HWND_BROADCAST
那么消息会被发送给所有顶层窗口
但是我这样做没有成功
发送消息的窗口自己都收不到消息
不知道是怎么回事

是不是非要指定了接受窗口句柄消息才会被收到呢
...全文
359 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
伏神 2008-11-13
  • 打赏
  • 举报
回复
1楼正解
RegisterWindowMessage注册的消息才能这样用
系统消息不一定都能成功
可能是我问题没讲清楚
好,结了
cnzdgs 2008-11-13
  • 打赏
  • 举报
回复
不过如果是自定义消息,是不能跨进程发送的,要用RegisterWindowMessage注册消息才可以。
cnzdgs 2008-11-13
  • 打赏
  • 举报
回复
可以用FindWindow找自己的窗口。
伏神 2008-11-13
  • 打赏
  • 举报
回复
看样子是不能用这个东西了

其实我是在把一个dll注入到了其它进程
特定情况发生就向我的主窗口发消息
注入过程是随机的所以我想避开窗口句柄发消息
既然不能这样我就只有用通信来传句柄了

..........在等几分钟结贴
palmax 2008-11-13
  • 打赏
  • 举报
回复
是同2楼。帖子刷的太快了。
palmax 2008-11-13
  • 打赏
  • 举报
回复
同楼上。
而且是否有效还取决于其他的程序对你发送的消息的处理。
zhucde 2008-11-13
  • 打赏
  • 举报
回复
可以的, 你试试:
::PostMessage(HWND_BROADCAST,WM_QUIT,0,0);

不过,特定的消息你当然要特定处理.

比如你给对话框发一个KeyDown的消息,对话框也不知道究竟要处理谁的鼠标按下的消息
一条晚起的虫 2008-11-13
  • 打赏
  • 举报
回复
发送消息的窗口自己都收不到消息
//如果窗口有child风格,就不会收到消息。
//顶层窗口是指overlapped,pop-up等没有父窗口的窗口。
//不是指z坐标最高的那个窗口。
samuellei 2008-11-13
  • 打赏
  • 举报
回复
Applications that need to communicate using HWND_BROADCAST should use the RegisterWindowMessage function to obtain a unique message for inter-application communication

16,472

社区成员

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

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

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