首页 / 软件开发 / C++ / 确定一个应用程序是否没有响应
确定一个应用程序是否没有响应2008-01-05今天在MSN的核心讨论组上看到两篇文章.讨论的乃是应用程序是否没有响应.原文如下:> How is it possible to determine a process is "not responding" like NT Task> Manager do?The heuristic works only for GUI processes, and consists of callingSendMessageTimeOut() with SMTO_ABORTIFHUNG.>There is any API call to do the job, or this status is simply a deduction>based on process counters, like that returned from call to GetProcessTimes>API function?Use SendMessageTimeout with a value of WM_NULL. That"s all TaskManager does to determine this AFAIK.--有理有理.当然,我这里还有一个UNDOCUMENTED函数,乃是其他的解决方案,NT和9X有个USER32.DLL的函数,IsHungAppWindow(NT)和IsHungThread(9X).使用起来简便无比.下面给出原型.BOOL IsHungAppWindow (HWND hWnd, // handle to main app"s window);BOOL IsHungThread (DWORD dwThreadId, // The thread"s identifier of the main app"s window);有了原型,连解释都不需要,好得不的了.:)不过调用时需要GetProcAddress.库里没有该函数.