我正在尝试从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
答案 0 :(得分:1)
您正尝试向所有顶级窗口广播WM_APP
范围内的自定义消息。这些消息在应用程序中是私有的,并且系统知道广播它们是无效的,并且阻止您这样做。它决定这样做以避免设计不良的应用程序导致其他应用程序不稳定。
documentation非常清楚如何广播自定义消息:
需要使用HWND_BROADCAST进行通信的应用程序应使用RegisterWindowMessage函数来获取用于应用程序间通信的唯一消息。