카테고리

  • 안드로이드
  • IOS
  • MFC
  • JAVA
  • AWS
  • LAMP
  • 여행&사진
  • 이런저런생활
  • 2015년 12월 23일 수요일

    [MFC] ShellExcuteEx를 이용한 커맨드창 종료 여부 확인

    ShellExcute를 이용해서 연속적으로 커맨드를 실행할 경우
    기다림 없이 실행한 수 만큼 커맨드를 띄워냄.
    (약280개의 IO처리 커맨드가 떠서 시간이 처리가 버벅거림)
    해서! 사용자가 잘 볼 수 있게! 커맨드 하나 하나씩 띄우는 방법을 찾아봄!

    ShellExcuteEx함수를 이용하여 실행한 커맨드 창에 대한 핸드러를 취득!
    WaitForSingleObject함수를 사용하여 커맨드창의 종료 여부에 대한 값을 가지고 온다.

    소스 예)

    SHELLEXECUTEINFO m_shell;

    ZeroMemory(&m_shell, sizeof(SHELLEXECUTEINFO));
    m_shell.cbSize = sizeof(SHELLEXECUTEINFO);
    m_shell.lpFile = _T("실행파일경로");
    m_shell.nShow = SW_SHOW;
    m_shell.fMask = SEE_MASK_NOCLOSEPROCESS;
    m_shell.lpParameter = _T("전달할 파라미터");
    m_shell.lpVerb = _T("open");
    ShellExecuteExW(&m_shell);

    //** 0.5초 기다리고 종료여부 반환
    DWORD dwResult = ::WaitForSingleObject(m_shell.hProces, 500);

    while(true) {
      if(dwResult == WAIT_OBJET_0) {
        break;
      } else {
        dwResult = ::WaitForSingleObject(m_shell.hProces, 500);
      }
    }

    출처 - http://glukjeoluk.tistory.com/entry/ShellExecuteEx-%EB%A1%9C-%EC%8B%A4%ED%96%89-%EC%8B%9C%ED%82%A8-%ED%8C%8C%EC%9D%BC-%EC%A2%85%EB%A3%8C-%EC%97%AC%EB%B6%80-%ED%99%95%EC%9D%B8

    댓글 없음 :

    댓글 쓰기