Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

как отследить что прога зависла?

6.7K
02 сентября 2005 года
kasyava
28 / / 27.07.2005
У меня такой вопрос.....

Как мне отследить зависла какая-либо прога или нет.
Просто нужно чтобы одна прога работала постоянно и если она зависла мне нужно ее перезапустить.

Воотт...
Подскажите плизззз как это сделать, или если кто нить уже писал такое помогите кодом.....если не трудно и не жалко.
362
02 сентября 2005 года
_kolyan
339 / / 03.12.2002
Как-то мне нужно было подобную штуку соорудить. тогда я сделал вторую небольшую программу, которая следила за активностью первой и, в силу простоты выполняемых действий, имела малую вероятность зависания.
Смысл был такой: первая программа, сриди основной свое работы, периодически выполняет что-то, по чему можно узнать работает она или нет - напрмер пишет в некоторый файл время. А вторая программа периодически читает из этого файла время; если время давно не обновлялось, это может означать, что первая программа зависла. Тогда вторая перестартует ее.
299
02 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by _kolyan
Как-то мне нужно было подобную штуку соорудить. тогда я сделал вторую небольшую программу, которая следила за активностью первой и, в силу простоты выполняемых действий, имела малую вероятность зависания.
Смысл был такой: первая программа, сриди основной свое работы, периодически выполняет что-то, по чему можно узнать работает она или нет - напрмер пишет в некоторый файл время. А вторая программа периодически читает из этого файла время; если время давно не обновлялось, это может означать, что первая программа зависла. Тогда вторая перестартует ее.



Теория создания Активности/Неактивносит юзеров на сайте.. чатах.))) А также пинг-понг, и вообще работа с сетью=)))

499
02 сентября 2005 года
madjahed
149 / / 14.01.2004
Цитата:
Originally posted by kasyava
У меня такой вопрос.....

Как мне отследить зависла какая-либо прога или нет.
Просто нужно чтобы одна прога работала постоянно и если она зависла мне нужно ее перезапустить.

Воотт...
Подскажите плизззз как это сделать, или если кто нить уже писал такое помогите кодом.....если не трудно и не жалко.



Для начала узнай Handle главного окна приложения, а дальше можно использовать 2 недокументированные функции : для Вин ХР и Вин 2000 - IsHungAppWindow(), а для Вин 98 - IsHungThread().

Короче используй функцию наподобие такой (Она автоматически определяет какая Виндовз запущена и вызывает соответствующую функцию) :

[COLOR=royalblue]
#define WINDOW_STATUS_INVALID_PARAM 0
#define WINDOW_STATUS_WORKING 1
#define WINDOW_STATUS_HUNG 2

DWORD IsHungWindow(HWND hWnd)
{
if(!IsWindow(hWnd))return WINDOW_STATUS_INVALID_PARAM;
HINSTANCE hLib=GetModuleHandle("user32.dll");
if(!hLib)return WINDOW_STATUS_INVALID_PARAM;
OSVERSIONINFO osvi;
osvi.dwOSVersionInfoSize = sizeof(osvi);
GetVersionEx(&osvi);

if(osvi.dwPlatformId==VER_PLATFORM_WIN32_NT)
{
BOOL (WINAPI * _IsHungAppWindow)(HWND);
*(FARPROC *)&_IsHungAppWindow=GetProcAddress(hLib, "IsHungAppWindow");
if(_IsHungAppWindow == NULL)return WINDOW_STATUS_INVALID_PARAM;
if(_IsHungAppWindow(hWnd)==TRUE)return WINDOW_STATUS_HUNG;
else return WINDOW_STATUS_WORKING;
}
else
{
DWORD dwThreadId = GetWindowThreadProcessId(hWnd, NULL);
BOOL (WINAPI * _IsHungThread)(DWORD);
*(FARPROC *)&_IsHungThread =GetProcAddress(hLib, "IsHungThread");
if(_IsHungThread == NULL)return WINDOW_STATUS_INVALID_PARAM;
if(_IsHungThread(dwThreadId)==TRUE)return WINDOW_STATUS_HUNG;
else return WINDOW_STATUS_WORKING;
}
return WINDOW_STATUS_INVALID_PARAM;
}
[/COLOR]

Если прога зависла - возвращает WINDOW_STATUS_HUNG, если передал неправильный hWnd - WINDOW_STATUS_INVALID_PARAM, Если всё ОК - WINDOW_STATUS_WORKING.

6.7K
03 сентября 2005 года
kasyava
28 / / 27.07.2005
спасибо за то что подсказали!!!!
:D
буду пробовать........
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог