2011-11-06 2 views
2

모달 Windows 오류 대화 상자를 리디렉션/캡처하는 방법을 아는 사람이 있습니까? 이것은 프로그램을 실행하고 종료 코드와 stdout/stderr 출력을 캡처하려고하는 비대화 형 명령 줄 프로그램에서 실제로 문제가됩니다. < foo.dll를있다가 컴퓨터에서 누락되어Windows 대화 오류 메시지를 콘솔로 리디렉션

이 프로그램은 시작할 수 없습니다 :

이 문제의 가장 최근의 예는 다음과 같은 형식이있는 모달 윈도우 대화 상자입니다. 이 문제를 해결하려면 프로그램을 다시 설치하십시오.

+0

이 대화 상자는 .bat/.cmd 파일 또는 명령 줄 프롬프트에서 시작하는 모든 프로세스에 대해 이미 표시되지 않습니다. 프로세스 종료 코드 이상으로 진단을 사용할 수 없습니다. 로더 스냅을 사용하지 않도록 설정할 수 있지만 디버깅 용으로 만 사용할 수 있습니다. http://blogs.msdn.com/b/junfeng/archive/2006/11/20/debugging-loadlibrary-failures.aspx –

+0

@HansPassant : 그게 더 이상 사실이라고 생각하지 마십시오. 방금 Windows 7을 확인한 후 배치 파일에서 시작한 프로그램이나 명령 줄 프롬프트에서 오류 대화 상자를 생성합니다. (아니면 실패한 실행 파일이 콘솔 대 GUI인지 여부에 달려 있습니다.) –

답변

3

(모달 GUI 윈도우의 제목은 "시스템 오류"인 경우)이 시스템 오류 대화 상자가 SetErrorMode()으로 억제 할 수있다. 이 경우 CreateProcess()가 실패하고 GetLastError()가 해당 오류 코드를 제공해야합니다.

관련 문제