Форум: "WinAPI";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
Внизкак поределить, что процесс завис? Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.05 c