У меня есть вопрос любопытства относительно Console vs Windows Application при запуске приложения из Cmd, вызывающего exe напрямую.
Если приложение скомпилировано как консольное приложение (будет ссылаться на него как на мой ConApp), при запуске приложения через cmd запрос ожидает завершения работы приложения, прежде чем продолжить. Однако, если приложение было скомпилировано в качестве приложения Windows (будет ссылаться на него как на мой WinApp), начиная приложение с помощью cmd в командной строке будет запущено и забыто WinApp, понятно, что это ожидаемое поведение.
Чтобы получить WinApp, чтобы остановить cmd от увольнения и забывания, нужно было бы запустить приложение в cmd с чем-то вроде «start \ wait WinApp.exe», это заставит приглашение Cmd ждать WinApp, чтобы остановить работу перед продолжением.
Мой вопрос вокруг этого заключается в том, как Console Application сообщает Cmd, или как Cmd знает, что он должен оставаться открытым, а не fire-and-forget ConApp? И можно ли вызывать одно и то же поведение в моем WinApp, т. Е. Мне не нужно называть «start \ wait»?
Примечание:
я играл с использованием AllocConsole и AttachConsole, однако при использовании AttachConsole (-1) в моем WinApp ЦМД до сих пор выстрелил и забывает WinApp однако WinApp кажется просто открыть новое окно консоли.Запуск приложения Windows и консольного приложения через Cmd
ответ
Эта информация хранится как часть части двоичного формата EXE в формате PEOptHeader
. В частности, Subsystem
поле указывает операционной системе, какой тип приложения это и может иметь следующие значения
- 1: Native
- 2: Windows/GUI
- 3: Windows не-GUI
- 5 : OS/2
- 7: POSIX
Это то, что говорит окна, какой тип программы это и, следовательно, дает ему возможность сделать отличаются как выбор cmd.
Технические детали в стороне (JaredPar did a really good job of doing that), если вы хотите изменить свою программу из режима Windows/GUI
в Windows non-GUI
все, что вам нужно сделать, это зайти в свою настройку проекта и измените раскрывающийся от «приложения Windows, "в„Console Application“
вы можете иметь запуск приложения окно в качестве консольного приложения, и это даст вам поведение, которое вы ожидаете. (обратите внимание, однако, если вы дважды щелкните по значку программы, он откроет окно консоли, которое останется открытым, пока ваша программа открыта.)
- 1. CMD Чтение C# консольного приложения
- 2. Windows Universal App - запуск CMD из приложения
- 3. Запуск консольного приложения из папки system32
- 4. Комбинирование консольного и оконного приложения
- 5. cmd пакет для прослушивания вывода консольного приложения
- 6. Предоставление .NET-программы выходного типа приложения Windows и консольного приложения
- 7. Запуск нескольких экземпляров консольного приложения с php
- 8. Проблема Запуск Selenium процесса из консольного приложения
- 9. Запуск приложения ASP.NET Core 1 из консольного приложения
- 10. Запуск консольного приложения программно при необходимости
- 11. Запуск основного приложения приложения через jar
- 12. консольного приложения
- 13. запуск консольного приложения из php-скрипта
- 14. Запуск кодированных данных ui из консольного приложения
- 15. Запуск внешнего консольного приложения из Java
- 16. Запуск приложения на windows mobile через ActiveSync
- 17. запуск консольного приложения из приложения nodejs с использованием child_process
- 18. Запуск приложения в Debug через Xcode и запуск приложения вручную
- 19. Запуск консольного приложения молча (подавить окно консоли от появления)
- 20. Прикладные приложения для консольного приложения не работают
- 21. Windows: медленный запуск приложения
- 22. Запуск приложения Node через Grunt
- 23. Правильное завершение многопоточного консольного приложения Windows
- 24. нужен URL-адрес приложения из консольного приложения
- 25. Создание невидимого консольного приложения
- 26. Установка консольного приложения
- 27. Размер Windows по умолчанию для консольного приложения
- 28. консольного приложения Windows, застревая (требуется нажатие)
- 29. Запуск приложения WebApi из приложения Windows
- 30. Хостинг долгосрочного консольного приложения в Windows?
Вы заинтересованы в технических деталях или как изменить свою программу от огня и забыл режима в режим ждать? –
Выполняет ли исполняемый файл приложение в режиме консоли или собственное приложение Windows в заголовке EXE-файла. Cmd.exe смотрит на это, чтобы знать, что делать. Это не поможет вам ничего решить. –