본문 바로가기
코드 조각

ProcessId로 Application의 Hung체크

by 알 수 없는 사용자 2012. 4. 24.

Process - ID 로 Window-Application의 Hung체크 하기


다음 두가지 기능으로 Process-Window의 Hung을 체크한다.

1) IsHungWindow 로 "응답없음" 체크 

2) EnumDesktopWindow 로 Process의 Window-Handle 찾기 


  
//---------------------------------------------------------------------------
typedef struct _PROC_INFO
{
    long iProcessId;
    HWND hWnd;
}PROC_INFO;
//---------------------------------------------------------------------------
BOOL __stdcall EnumDeskTopWindowProc(HWND hWnd, LPARAM lParam)
{
    unsigned long iThreadId,iProcessId;
    PROC_INFO *pInfo=(PROC_INFO *)lParam;
    iThreadId=GetWindowThreadProcessId(hWnd,&iProcessId);
    if(iProcessId==pInfo->iProcessId)
    {
        pInfo->hWnd=hWnd;
        return false;
    }
    return true;
}
//---------------------------------------------------------------------------
bool IsHungProcessWindow(int iProcessID)
{
    PROC_INFO pInfo;
    pInfo.iProcessId=iProcessID;
    pInfo.hWnd=0;
    EnumDesktopWindows(0,(FARPROC)EnumDeskTopWindowProc,(long)&pInfo);
    if(pInfo.hWnd!=0)return IsHungAppWindow(pInfo.hWnd);
    return false;
}
     


그럼..