为了进行测试,我需要编写一个程序,在屏幕上显示著名的“应用程序未响应”消息。
我不知道该怎么惹。

最快和最简单的方法是什么?最好是C / C ++或Java

最佳答案

在Windows API中,GUI程序通过消息从OS获取输入,并且它必须在message loop中接收和分发这些消息。发生的任何事情(鼠标移动/单击,按键按下,以及诸如退出应用程序的请求之类的东西)都作为消息传递。

创建每个窗口后,您可以附加一个回调函数,该函数实际处理与该窗口相关的消息(请注意,每个GUI元素都是一个窗口,例如按钮或文本输入字段)。在Windows API中,此回调称为window procedure

当应用程序无法及时处理消息时,操作系统会显示消息“应用程序无响应”。因此,在代码中的某个地方,您只需要停止处理消息就可以激发它,例如,您可以有意在消息循环或窗口过程中输入无限循环。

现在,如果您使用Java进行编码或在C中使用某些GUI工具包(例如GTK),则不会编写自己的消息循环和窗口过程,框架/工具包将为您提供这些信息,从而为您提供了更高层次的抽象接口。是否可以引发无响应的应用程序取决于框架的设计。您基本上需要占用“ UI线程”(例如,在通常处理消息的主线程中执行无限循环,因此它无法完成其工作)。

如果由于有错误的应用程序而显示此消息,则表明该错误正在主线程中执行a)无限循环,b)无限阻止或c)进入死锁的操作。永远不要在Win32应用程序的主/ UI线程中执行无法立即完成的操作。或者,更一般而言,您永远不要在任何GUI程序中处理事件/处理消息的线程中执行类似的操作。

10-07 19:16
查看更多