C++로 작성된 GUI 기반 응용 프로그램에서 콘솔로 출력 할 수 있어야하므로 AttachConsole (ATTACH_PARENT_PROCESS) API와 this code을 사용하기로했습니다. 그 방법은 훌륭하지만 GUI 응용 프로그램을 명령 프롬프트 창에서 시작하면 GUI 응용 프로그램이 잘 시작되지만 명령 프롬프트 창을 닫으면 GUI 응용 프로그램이 종료됩니다 (종료되지 않고 종료되었습니다.). 이 응용 프로그램 종료를 방지하는 방법?콘솔을 닫을 때 GUI 응용 프로그램의 AttachConsole
답변
stdout
스트림에 텍스트를 게시하기 직전에 상위 콘솔에 연결 한 다음 분리하여이 문제를 해결할 수있었습니다. 이렇게하면 텍스트가 올 바르고 콘솔이 내 GUI 응용 프로그램과 별개의 상태로 유지됩니다.
Here's the MFC/C++ class 사용하고자하는 사람들을위한 완벽한 구현.
원본 코드 등을 모두 입력하는 대신 5 글자를 모두 입력 할 수 있다고 생각합니다. 원래 주석으로 설명 했으므로 요청시 자세히 설명하고 완전한 예제 소스 코드, 빌드 예제로 설명했습니다 대답으로 인해 응답에서 나는 예제를 실행했다. –
GUI 프로세스가 연결되어있는 동안 콘솔이 닫힐 위험이있다. –
@ Cheersandhth.- Alf 나는 이것을 보러 돌아왔다. 콘솔이 닫히면,'cat' 프로세스를 사용하지만 다른 GUI 서브 시스템 프로세스는 그대로 둡니다. 'cat' 프로세스가 콘솔에 첨부 된 프로세스이기 때문입니다. 매우 깔끔합니다. 나는 당신이 단지 그것을 설명했다면, 당신의 대답이 좋았을 것이라고 생각합니다. 그러나, 나는 ahmd0가 항상 출력을 파이프하기를 원한다는 것을 매우 의심합니다. 더 많은 일은 콘솔을 잠급니다. 다시 한번 나는 ahmd0가 원하지 않는다고 확신한다. FWIW, 내보기에서 ahmd0는 기존 콘솔에 GUI 하위 시스템 응용 프로그램을 연결해서는 안됩니다. 그것은 고통으로 이어질 것입니다. –
누군가 콘솔 창을 닫으면 응용 프로그램이 닫히지 않도록 할 수 있습니다.
이러한 이벤트를 가로 채는 HandlerRoutine을 설정하려면 SetConsoleCtrlHandler을 호출해야합니다.
콘솔 창을 닫고 앱을 계속 실행하려면 HandlerRoutine
에서 FreeConsole
으로 전화를 걸 수 있습니다. 그래도 작동하지 않으면 콘솔 창을 삭제하지 못하도록 메시지를 처리하고 핸들러에서 돌아온 후 앱이 FreeConsole
에 전화하도록하는 플래그 또는 타이머를 설정하십시오.
사용자가 창에서 X를 치면 창을 닫을 수 없습니다. 내가 그것을 방지하기 위해 창 메뉴를 수정하는 것입니다. 자세한 내용은 http://blog.mischel.com/2008/07/14/going-too-far-back/을 참조하십시오.
고마워요. 나는 그것을 시도했다. 불행히도 내가 처리기에서'FreeConsole'을 호출하면 내 GUI 응용 프로그램은 어쨌든 종료됩니다. 그리고 닫기 버튼을 비활성화하는 것은 너무 어렵습니다. 내가 생각했던 것은 printf() 나 다른 텍스트 출력이 끝난 순간에만 GUI 프로세스에 콘솔을 연결 한 다음 바로 연결을 끊는 것이다. 이렇게하면 붙어 있지 않습니다. 내가 알아낼 수없는 것은 그것을 우아하게 분리하는 방법입니다. 어떤 아이디어? – ahmd0
'FreeConsole'이 정상적으로 분리되지 않습니까? –
이 내용은 Q에서 다룰 수 있습니다. Q :이 Q에 대한 설명에 링크되어 있습니다. –
- 1. 콘솔을 닫을 때 메서드 호출
- 2. .NET GUI 응용 프로그램의 Console.Write
- 3. Windows8 용 AttachConsole (...)
- 4. AttachConsole 오류 5 : 액세스가 거부되었습니다.
- 5. GUI 응용 프로그램의 이벤트 처리 스레드 C++
- 6. 위젯을 닫을 때 임베디드 Qt GUI 아티팩트가 나타남
- 7. GUI 프로그램을 닫을 수 없습니다.
- 8. 리눅스 응용 프로그램의 자동화 된 GUI 테스트
- 9. GUI 응용 프로그램의 버퍼를 실행 취소
- 10. GIS 응용 프로그램의 자동 GUI 테스트
- 11. qt에서 콘솔을 표시하는 방법 cmake가있는 Windows GUI 응용 프로그램
- 12. GCC로 직접 GUI 응용 프로그램을 만들고 콘솔을 제거하십시오
- 13. 콘솔 응용 프로그램의 winform
- 14. os.startfile()에서 콘솔을 숨길 때?
- 15. 콘솔을 사용할 때 java.lang.NoClassDefFoundError
- 16. 탭을 닫을 때 체크 아웃
- 17. 이 시나리오에서 콘솔 응용 프로그램의 콘솔을 어떻게 표시합니까?
- 18. 내 응용 프로그램의 exe 실행 파일도 콘솔을 엽니 다.
- 19. QML이 GUI 창과 콘솔을 엽니 다.
- 20. 안드로이드에서 데이터베이스를 닫을 때
- 21. ModalViewController를 닫을 때 EXEC_BAD_ACCESS
- 22. WinForm/Console 하이브리드 응용 프로그램의 동작
- 23. 사용자가 응용 프로그램을 닫을 때 값 삭제
- 24. UWP 응용 프로그램을 닫을 때 어떻게 처리합니까?
- 25. 응용 프로그램을 닫을 때 webview의 쿠키는 어떻게됩니까?
- 26. 응용 프로그램을 닫을 때 예외 발생
- 27. 창을 닫을 때 응용 프로그램 종료
- 28. 콘솔 닫을 때 호출 방법 (Java)
- 29. cmd에서 실행할 때 콘솔과 winforms 응용 프로그램의 차이점
- 30. WPF를 사용하는 .NET 4 응용 프로그램의 모노 포트 용 GUI
대신 AllocConsole을 사용하지 않는 것이 좋습니다. 그것은 당신의 필요에 더 적합하게 보일 것입니다. GUI와 콘솔 앱은 일반적으로 잘 어울리지 않습니다. –
GUI 응용 프로그램이 자체적으로 실행되는 경우 콘솔을 할당 할 필요가 없기 때문에'AllocConsole'을 호출하지 않습니다. 일반적으로 실행하는 것처럼. GUI 응용 프로그램 옆에 명령 프롬프트 창이 열립니다. – ahmd0
@ Cheersandhth.-Alf : 미안 해요. 고양이에 익숙하지 않아요? 더 자세한 정보를 제공 할 수 있습니까? – ahmd0