向不存在的窗口发送消息好吗?

Posted

技术标签:

【中文标题】向不存在的窗口发送消息好吗?【英文标题】:Is sending message to a non-existent window Ok? 【发布时间】:2014-07-02 18:08:00 【问题描述】:

我有一个向窗口发送更新消息的线程,我使用::SendMessage()::PostMessage() API。

我进出多个对话框,并通过窗口句柄 (m_hWnd) 在线程中注册我当前所在的对话框。如果我完全退出,主应用程序窗口不会处理这些消息。出于这个原因,我没有注册那个窗口。此时线程将拥有一个现在不存在的旧窗口的句柄。

如果它向那个不存在的窗口发送消息可以吗?我假设它不应该造成任何伤害,但想仔细检查。

【问题讨论】:

向 NULL 窗口发送消息好吗?我不想要不必要的if-elsestatements,但我可以在所有消息将被定向到的线程中将窗口句柄设置为 NULL。 @Deduplicator 不知道为什么人们会否决一个合法的问题?在 Objective-C 中,你可以在任何对象上调用任何方法,在 NULL 对象上调用方法是常用的技巧(如果我现在记得的话) 它发生了。无论如何,这一点可以说得更清楚。体内的文字墙有点排斥……不过,让我重新审视事物。 【参考方案1】:

不,不能将消息发布到已删除的窗口。 不能保证在前一个租户离开后,没有人会在那个地址开店。

如果您使用NULL 窗口句柄,您将向当前线程消息队列发布线程消息。 SendMessage 据我所知,谷歌应该是无操作的。 可能足够无害。

现在,我们变得棘手了:

在特定情况下无所谓,前提是行为良好的应用程序。

    WM_NULL 之类的消息不应该让任何事情发生。 您使用 RegisterWindowMessage 在您的应用程序中全局注册的窗口消息,如果您能保证在此期间创建的任何应用程序窗口都不会阻塞它。

【讨论】:

句柄回收问题是 16 位 Windows 的问题,但自从 WinNT 以来不是问题,尽管 MS 不喜欢它:blogs.msdn.microsoft.com/oldnewthing/20070717-00/?p=25983

以上是关于向不存在的窗口发送消息好吗?的主要内容,如果未能解决你的问题,请参考以下文章

向不与我的机器人共享服务器的用户发送消息

如何将我网站上的表单字段中的输入数据发送到一个不和谐的 webhook,该 webhook 向不和谐的用户发送消息?

我如何向不和谐请求添加附件?

如何在不和谐上发送私人消息[关闭]

向在不和谐中扮演角色的每个人发送私人消息

qq2006中怎样取得发送消息窗口中的Richedit