Я думаю, что единственный способ определить, зависло ли окно, - это определить, когда зависает его приложение.И я думаю, что единственный способ - надежно - сделать это - поговорить с ним.Отправьте ему какое-то межпроцессное сообщение и дождитесь действия.Я думаю, что именно так система это обнаруживает: до появления пляжного мяча есть некоторая задержка.И это потому, что система отправила сообщение и не получила ответа в течение x секунд.
Что это за сообщение, трудно сказать.Должно быть что-то, что проходит через основной цикл событий, но может быть отправлено каждым приложением.Я уверен, что Google поможет вам найти его.Я не профессионал в межпроцессных коммуникациях, и мне тоже придется искать.