gpt4 book ai didi

windows - SendMessage(HWND_BROADCAST, ....) 挂起

转载 作者:可可西里 更新时间:2023-11-01 12:27:07 26 4
gpt4 key购买 nike

当我将 SendMessage 函数与 HWND_BROADCAST 一起使用时,应用程序挂断了。应用长时间无响应。

谁能解释一下为什么?

最佳答案

当有一个进程有一个顶级窗口,但没有在创建该窗口的线程上调用 GetMessage 或 PeekMessage 时,就会发生这种情况。

为了与 Windows 3.0 向后兼容,SendMessage 将不会返回,直到系统中的所有顶级窗口都响应了您的广播。在 Windows 成为多线程之前,这种行为是有意义的,因为 SendMessage(),即使发送到其他进程也永远不会阻塞。

但是从 Win32 开始,当您向另一个进程中的窗口发送消息时,实际发生的是您的线程阻塞,直到另一个进程中的线程唤醒并处理该消息。如果该线程正忙,或者只是不发送消息,那么您将永远等待。

因此,当您使用 HWND_BROADCAST 或以其他方式向其他进程拥有的窗口发送消息时,您应该始终使用 SendNotifyMessageSendMessageTimeout

关于windows - SendMessage(HWND_BROADCAST, ....) 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com