HWND_BROADCAST的sendMessage不起作用

时间:2015-04-13 18:39:50

标签: vb.net pinvoke

我正在尝试从fromMain向from1发送消息,我使用findwindow来查找form1和sendMessage的句柄,它完美地运行。但我使用sendMessage来广播消息,它根本不起作用。任何人请帮我找出问题所在?

    Public Const WM_MyMsg As Integer = &H8001
    Public Const HWND_BROADCAST As Integer = &HFFFF&


    Dim hnwd As Integer = CInt(FindWindow(vbNullString, "form1"))
    SendMessage(hnwd, WM_MyMsg, 0, 0) 'works perfectly, form1 get the msg


    SendMessage(HWND_BROADCAST, WM_MyMsg, 0, 0) 'not working at all, form1 doesn't have any response

1 个答案:

答案 0 :(得分:1)

您正尝试向所有顶级窗口广播WM_APP范围内的自定义消息。这些消息在应用程序中是私有的,并且系统知道广播它们是无效的,并且阻止您这样做。它决定这样做以避免设计不良的应用程序导致其他应用程序不稳定。

documentation非常清楚如何广播自定义消息:

  

需要使用HWND_BROADCAST进行通信的应用程序应使用RegisterWindowMessage函数来获取用于应用程序间通信的唯一消息。