2014-01-07 3 views
12

Cmd에서 응용 프로그램을 실행할 때 콘솔과 Windows 응용 프로그램에 대해 궁금한 점이 있습니다. 직접 exe를 호출하십시오.
응용 프로그램이 콘솔 응용 프로그램 (내 ConApp으로 표시됨)으로 컴파일 된 경우 cmd를 통해 응용 프로그램을 실행하면 계속하기 전에 응용 프로그램이 완료되기를 기다립니다. 그러나 응용 프로그램이 Windows 응용 프로그램 (내 WinApp으로 참조 함)으로 컴파일 된 경우 cmd를 통해 응용 프로그램을 시작하면 WinApp이라는 메시지가 표시됩니다. 당연히 예상되는 동작입니다.
WinApp에서 cmd를 실행 중지하는 것을 중지하려면 "start \ wait WinApp.exe"와 같은 cmd를 사용하여 응용 프로그램을 시작해야합니다. 그러면 Cmd 프롬프트가 을 기다리게됩니다 계속하기 전에 WinApp의 실행을 중지하십시오.
콘솔 응용 프로그램이 Cmd에 알리는 방법 또는 Cmd가 열린 채로 있어야하며 번복하지 말고 ConApp을 어떻게 알 수 있습니까? 그리고 WinApp에서 같은 종류의 동작을 호출 할 수 있습니까? 즉 "start \ wait"를 호출 할 필요가 없습니까? 는

참고 : WinApp 보인다 그러나 내 WinApp에 AttachConsole (-1)를 사용할 때 나는 그러나, AllocConsole 및 AttachConsole를 사용하여 주위를 연주 한
는 Cmd를 여전히 WinApp 화재 - 및 - 잊어 새 콘솔 창을 열면됩니다.Windows 응용 프로그램 대 Cmd를 통한 콘솔 응용 프로그램 시작

+0

당신은 기술적 인 세부 사항에 관심이 또는 얼마나 모드를 기다려야 파이어 앤 포겟 모드에서 프로그램을 변경하려면? –

+1

실행 파일이 콘솔 모드 응용 프로그램 또는 기본 Windows 응용 프로그램인지 여부는 EXE 파일의 헤더에 기록됩니다. Cmd.exe는 수행 할 작업을 알기 위해이 파일을 찾습니다. 이것은 당신이 아무것도 해결하는 데 도움이되지 않습니다. –

답변

7

이 정보는 EXE 바이너리 형식의 PEOptHeader 부분의 일부로 저장됩니다. 특히 Subsystem 필드는이 응용 프로그램의 어떤 종류의 운영 체제를 지시하고 다음 값

  • 일 수 있습니다 : 기본
  • 2 : 윈도우/GUI
  • 3 : Windows가 아닌 GUI
  • (5) : OS/2
  • 7 : POSIX

이것은이며, 따라서 그것을 다른 만들 수있는 기능을 제공합니다 프로그램의 유형 창을 알 것입니다 cmd가하는 것처럼 선택을 할 수 있습니다. 옆

Documentation Link

3

기술 세부 사항 (JaredPar did a really good job of doing that) 당신이 Windows non-GUIWindows/GUI 모드에서 프로그램을 변경하려는 경우, 당신이해야 할 모든 프로젝트 설정에 가서 Windows 응용 프로그램 "에서 드롭 다운을 변경입니다 "을"콘솔 응용 프로그램 "

enter image description here

당신은 콘솔 응용 프로그램으로 윈도우 응용 프로그램 실행을 가질 수 있고 그것은 당신에게 당신이 기대하는 행동을 줄 것이다. (그러나 프로그램의 아이콘을 두 번 클릭하면 프로그램이 열려있는 동안 열려있는 콘솔 창이 열립니다.)

enter image description here

관련 문제