3

此消息是什么意思,是否有 API 可以“响应”Microsoft Windows 状态查询?

我正在寻找技术答案。谢谢 :)

4

2 回答 2

7

这意味着程序无法为其消息队列提供服务。从文档中:

如果顶级窗口停止响应消息超过几秒钟,则系统认为该窗口没有响应。在这种情况下,系统会隐藏窗口并用具有相同 Z 顺序、位置、大小和视觉属性的幻影窗口替换它。这允许用户移动它、调整它的大小,甚至关闭应用程序。但是,这些是唯一可用的操作,因为应用程序实际上没有响应。在调试器模式下,系统不会生成幻影窗口。

通常这意味着程序的主线程很忙并且调用GetMessage的频率不够高。长时间运行的任务应该在主 UI 线程以外的线程上执行。

于 2015-06-02T10:03:13.607 回答
3

Windows 应用程序通过接收窗口消息与操作系统交互。这些消息由应用程序在其主线程中循环处理。

如果应用程序未能及时处理其消息(几秒钟是余量),则其消息队列已填满,Windows 将此应用程序标记为“未响应”,使其主窗口呈现白色等。

这种行为主要是由于在处理窗口消息的同一线程上执行冗长的操作引起的。这个线程通常被称为“主 UI 线程”。如果您不执行任何显式多线程,它很可能是您的应用程序的唯一线程。

于 2015-06-02T10:08:24.177 回答