检测mac os x中的非响应窗口

时间:2010-09-03 13:24:20

标签: objective-c cocoa macos

我正在开发一个客观的c应用程序,我想检测非响应窗口,即使它们不属于我的应用程序。 是否有办法在发生此类案件时得到通知?

先谢谢你的帮助,

此致

2 个答案:

答案 0 :(得分:1)

您可以将仪器应用程序与“旋转监视器”仪器轨道一起使用。如果将其设置为监视“所有进程”,它将在应用程序挂起时捕获堆栈跟踪(不会长时间处理主事件循环)。

alt text

答案 1 :(得分:1)

我认为检测窗口是否挂起的唯一方法是检测其应用程序何时挂起。而且我认为唯一的方法 - 可靠 - 做到这一点就是与它交谈。发送一些进程间消息并等待操作。我认为这正是系统检测到的方式:在沙滩球出现之前有一些延迟。这是因为系统发送了一条消息,并在x秒内没有收到任何答复。

可能是什么样的信息很难说。必须是通过主事件循环但可以由每个应用程序发送的东西。我相信谷歌会帮助你找到它。我不是进程间通信的专家,也必须搜索。