| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Как узнать, что приложение не отвечает |
| Автор: MadCoder 15.7.2009, 20:39 |
| Добрый вечер! Подскажите, как можно определить, что чужое приложение не отвечает (как это делает Windows), т.е. интерфейс программы завис и не обновляется |
| Автор: kami 15.7.2009, 21:28 |
| http://msdn.microsoft.com/en-us/library/ms644952(VS.85).aspx Добавлено через 40 секунд но опять-таки, нужно знать какому окну отправлять сообщение. |
| Автор: MadCoder 15.7.2009, 22:37 | ||
Например, так:
Test - зависшее приложение. Только несмотря на зависание Res равен 1, если программа не висит - тогда 0 (я так понимаю, там должны быть миллисекунды). Хотя выполнение SendMessageTimeout занимает ощутимо больше секунды... |
| Автор: kami 15.7.2009, 22:50 | ||
не то анализируешь. Нужен результат, возвращаемый самой SendMessageTimeout.
А res - это результат обработки оконной функцией твоего сообщения. Ощутимо более секунды... ну так ты сам указал таймаут в 5 секунд... P.S. попробуй комбинации с SMTO_ABORTIFHUNG. |
| Автор: MadCoder 15.7.2009, 23:03 | ||
Хм, пишет 0 мс и "Параметр задан неверно", хотя чужое приложение Test закрывается успешно:
|
| Автор: kami 15.7.2009, 23:10 | ||
Добавлено через 1 минуту и 10 секунд И в этом коде нет обработки - найдено окно или нет. Потому что если не найдено - смысл отправлять сообщение? |
| Автор: MadCoder 15.7.2009, 23:19 |
| Круто! Спасибо, все работает замечательно |
| Автор: MadCoder 15.7.2009, 23:49 |
| Вот http://gunsmoker.blogspot.com/2009/01/anti-freeze-eurekalog.html тоже интересный материяльчик |
| Автор: CodeMonkey 16.7.2009, 09:41 |
| Есть ещё http://msdn.microsoft.com/en-us/library/ms633526(VS.85).aspx. Примерно это то же самое, что ручная отправка SendMessageTimeout, только без настроек. |
| Автор: MadCoder 16.7.2009, 09:46 |
| Спасибо |
| Автор: CodeMonkey 16.7.2009, 12:10 | ||
Это про:
|
| Автор: Rrader 16.7.2009, 14:46 |
| Ну да. |