Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.14;
Скачать: CL | DM;

Вниз

как поределить, что процесс завис?   Найти похожие ветки 

 
serg128   (2007-11-29 14:27) [0]

Подскажите, как поределить, что процесс завис(Not Responding в Task Manager)? Для получения перечня процессов использую такой код (пишу на С++):
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);


 
tesseract ©   (2007-11-29 14:31) [1]


> Подскажите, как поределить, что процесс завис(Not Responding
> в Task Manager)


А кто сказал, что он завис?  Возможно просто ждет окончания дисковой операции. 1с так "зависает" по сто раз на дню.


 
serg128   (2007-11-29 14:39) [2]

Согласен, но тогда интересует его таймаут. Делал так: вешал программу (её хэндл = 45) путем бесконечного цикла, а из другой программы вызывал такие функции:

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

го это не помогло :(


 
Сергей М. ©   (2007-11-29 14:43) [3]


> её хэндл = 45


В каком огороде такие нечетные хэндлы растут ?)


 
serg128   (2007-11-29 15:31) [4]

45 - это для примера. По сути есть что то?


 
homm ©   (2007-11-29 15:33) [5]

> [0] serg128   (29.11.07 14:27)
> Подскажите, как поределить, что процесс завис(Not Responding
> в Task Manager)?

Дак завис, или Not Responding  в Task Manager????


 
Сергей М. ©   (2007-11-29 15:34) [6]


> 45 - это для примера


Ну и нахрена это пример ?
И ежу понятно, что первый параметр вайт-функциии есть хэндл объекта синхронизации.


> это не помогло


Значит if-условие ложно.


 
serg128   (2007-11-29 15:48) [7]

Продвинулся дальше: теперь у меня такой код:

  HANDLE hp = OpenProcess(PROCESS_ALL_ACCESS, true, 5548);

  if(WaitForSingleObject(hp, 1) == WAIT_TIMEOUT) ShowMessage("WAIT_TIMEOUT");
  if(WaitForSingleObject(hp, 1) == WAIT_OBJECT_0) ShowMessage("WAIT_OBJECT_0");

  CloseHandle(hp);

Но теперь у меня все время (когда прога висит и не висит) выскакивает WAIT_TIMEOUT :(


 
Сергей М. ©   (2007-11-29 15:51) [8]


> все время (когда прога висит и не висит) выскакивает WAIT_TIMEOUT


А что ты ожидал увидеть ?


 
serg128   (2007-11-29 16:42) [9]

Как получить HWND окна зная имя\номер процесса?


 
Сергей М. ©   (2007-11-29 16:46) [10]

Нахрен он тебе вперся ?) Особо в связи с "кто-то там завис" ?)


 
Rouse_ ©   (2007-11-29 17:36) [11]

IsHungAppWindow()


 
serg128   (2007-11-30 17:31) [12]

справился! работает на 5+! Кому интересно - код выложу (на С++ правда)


 
Rouse_ ©   (2007-11-30 18:51) [13]

не покажи чудо народу :)



Страницы: 1 вся ветка

Текущий архив: 2008.09.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
2-1215897578
sashap
2008-07-13 01:19
2008.09.14
Сообщения чужим окнам.


2-1217460977
fluxion
2008-07-31 03:36
2008.09.14
Заливка ячеек DBGrid


15-1216989150
pasha_golub
2008-07-25 16:32
2008.09.14
Саппортовые заготовки


11-1193513916
Сергей
2007-10-27 23:38
2008.09.14
Проблема с графикой в KOL


3-1206087836
denis24
2008-03-21 11:23
2008.09.14
гетерогенный запрос