NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    C# 응용 프로그램이 응답 없음 상태인지 체크하는 방법. (How to check if the application is in an…

    페이지 정보

    본문

    녹스(NOX)나 엘디플레이어(LD player)를 장시간 돌리다보면 "응답 없음" 상태가 되는 경우가 있습니다. 매크로 입장에서 보면 이런 문제를 해결하기 위해 해당 응용 프로그램의 상태를 확인할 수 있어야 하는데요. 아래 메소드를 사용해서 응답 없음 상태라면 강제로 종료시키고, 다시 실행해야 합니다. 그리고 스크립트도 다시 동작시켜야 하구요. 아무튼 아래 코드는 응용 프로그램이 응답 없음 상태인지 확인하는 메소드입니다.

    /// <summary>
    /// 프로세스가 응답없음 상태인지 확인합니다.
    /// </summary>
    /// <param name="process">상태를 확인할 프로세스입니다.</param>
    /// <returns>프로세스가 응답없음 상태면 True를 반환합니다.</returns>
    public static bool IsFrozenProcess(Process process)
    {
        Process[] processes = Process.GetProcesses();
        foreach (Process p in processes)
        {
            if (p.ProcessName.ToLower().Contains("werfault"))
            {
                // werfault.exe에서 명령 줄 문자열을 가져옵니다.
                string startupParam = GetCommandLine(p);
    
                // 고정된 프로세스 ID를 가져옵니다.
                // 물론 이 부분을 최적화 할 수 있지만, 이 경우에는 작동합니다.
                int pID = int.Parse(startupParam.Split(new string[] { "-p" }, StringSplitOptions.None).
                            Last().Split(new string[] { "-s" }, StringSplitOptions.None).First().Trim());
    
                // Frozen 된 프로세스를 가져옵니다.
                if (process.Id == pID)
                {
                    return true;
                }
            }
        }
        return false;
    }

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.