powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / как поределить, что процесс завис?
6 сообщений из 6, страница 1 из 1
как поределить, что процесс завис?
    #34974785
Фотография Serega128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, как поределить, что процесс завис(Not Responding в Task Manager)? Для получения перечня процессов использую такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
  HANDLE hProcessSnap = NULL;
  PROCESSENTRY32 pe32      = { 0 };

  hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
  pe32.dwSize=sizeof(PROCESSENTRY32);
  if(Process32First(hProcessSnap,&pe32)) ListBox1->AddItem(pe32.szExeFile, this);
  ListBox1->AddItem(pe32.szExeFile, this);
  pe32.dwSize=sizeof(PROCESSENTRY32);
  while(Process32Next(hProcessSnap,&pe32))
  {
    ListBox1->AddItem(pe32.szExeFile, this);
    pe32.dwSize=sizeof(PROCESSENTRY32);
  }
  CloseHandle(hProcessSnap);
...
Рейтинг: 0 / 0
как поределить, что процесс завис?
    #34975084
Фотография Serega128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делал так: вешал программу (её хэндл = 45) путем бесконечного цикла, а из другой программы вызывал такие функции:

if(WaitForSingleObject((void*)45, 1) == WAIT_TIMEOUT) ShowMessage("WAIT_TIMEOUT");
if(WaitForSingleObject((void*)45, 1) == WAIT_OBJECT_0) ShowMessage("WAIT_OBJECT_0");

но это не помогло :(
...
Рейтинг: 0 / 0
как поределить, что процесс завис?
    #34975248
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хмм… может, как-то через окна надо? Это вроде только для оконных приложений такой статус есть.
...
Рейтинг: 0 / 0
как поределить, что процесс завис?
    #34975524
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega128 пишет:
> Подскажите, как поределить, что процесс завис(Not Responding в Task
> Manager)? Для получения перечня процессов использую такой код:

В общем-то никак. Task Manager это делает путем анализа времени
обработки последнего оконного сообщения (это только для оконных
приложений). Если оно было давно (опр. период у него внутри прошит),
то считается, что приложение "висит". Но, естественно, это не
вполне достоверное утверждение.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
как поределить, что процесс завис?
    #34975570
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serega128 wrote:
> Подскажите, как поределить, что процесс завис(Not Responding в Task
> Manager)? Для получения перечня процессов использую такой код:

Это возможно только для окон. Что-нибудь наподобие EnumThreadWindows и
SendMessageTimeout() с параметром SMTO_ABORTIFHUNG.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
как поределить, что процесс завис?
    #34975680
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega128Подскажите, как поределить, что процесс завис(Not Responding в Task Manager)? Для получения перечня процессов использую такой код:

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

Если код программы твой, можешь сделать, что-то типа ватчдога.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / как поределить, что процесс завис?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]