Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Aruynayrri
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 1
#1

Как определить, что приложение не отвечает?

16.12.2014, 16:28. Просмотров 1005. Ответов 1
Метки нет (Все метки)

Как определить, что приложение не отвечает?

Если приложение не отвечает закрыть приложение принудительно (убить процесс)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2014, 16:28
Ответы с готовыми решениями:

Есть исходники браузера, на С++, где найти информацию или как определить какой файл, за что отвечает?
доброго времени, форумчане. Есть исходники браузера, на С+. Файлов немерено....

Определить что приложение запущено из сети
Подскажите решение. Как приложению определить что его запустили не с локального...

Знаю,что должен сам знать, но ПОмогите пожалуйста.кто может, поясните хотя бы кратно,какая строчка за что отвечает
//--------------------------------------------------------------------------- ...

Как сделать что бы одновременно открывлись форма и консольное приложение?
Как сделать что бы одновременно открывлись форма и консольное приложение?

Как быть увереным, что приложение будет работать на машине пользователя?
Как я понял, изделие на VC++ даже в релиз использует библиотеки MFC. (кстати,...

1
BRcr
4015 / 2305 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
16.12.2014, 17:34 #2
Лучший ответ Сообщение было отмечено Aruynayrri как решение

Решение

На вскидку:
Использование функции SendMessageTimeout

Функция SendMessageTimeout посылает сообщение указанному окну. Функция примечательна тем, что в случае, если окно принадлежит другому потоку, она не возвращает управления до тех пор, пока окно не обработает сообщение, либо не истечет указанный интервал времени. Кроме того, если указан флаг SMTO_ABORTIFHUNG, и похоже, что вызываемое приложение зависло, функция возвращает управление сразу же, не дожидаясь, когда истечет таймаут. Именно это свойство SendMessageTimeout позволяет использовать ее для определения зависших приложений.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
BOOL IsAppHung_SMTO(
    IN HWND hWnd,
    OUT PBOOL pbHung
    )
{
    _ASSERTE(pbHung != NULL);
 
    *pbHung = FALSE;
 
    if (!IsWindow(hWnd))
        return SetLastError(ERROR_INVALID_PARAMETER), FALSE;
 
    DWORD_PTR dwResult;
    if (!SendMessageTimeout(hWnd, WM_NULL, 0, 0, 
                            SMTO_ABORTIFHUNG|SMTO_BLOCK, 500,
                            &dwResult))
        *pbHung = TRUE;
 
    return TRUE;
}
Мы посылаем сообщение WM_NULL главному окну проверяемого приложения. Если это сообщение будет успешно доставлено окну, то окно его просто проигнорирует, если же SendMessageTimeout вернет ошибку, мы считаем, что приложение зависло.
Полностью здесь --> Как определить, что приложение не отвечает?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2014, 17:34

Как сделать установщик что бы устанавливалась бд и приложение работала с ним
Здравствуйте, возник такой вопрос была написана приложение и бд к нему. Теперь...

Клиент-серверное приложение: как определить, что сервер/клиент не отвечает в течении определенного времени
Пишу клиент-серверное приложение. Использую TCPListener и TCPClient. Вопрос:...

Microsoft windows приложение не отвечает . Возможно, что приложение ответит , если подождать
Началось 2 дня назад до этого того небыло делал memtest86 и проверял жеский...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru