Различие между Приложением Windows и Консольным приложением

решение для одной ячейки:

=ARRAYFORMULA(IF(COUNTIFS('Form Responses 1'!B2:B, "="&$A$7,
                          'Form Responses 1'!E2:E, "=John Smith"),
                          'Form Responses 1'!F2:F, " "))
48
задан Kate Gregory 4 January 2011 в 18:43
поделиться

5 ответов

Единственное различие - то, что консольное приложение всегда порождает консоль, если оно не запускается с одного (или консоль активно подавлена на запуске). Приложение Windows, с другой стороны, не порождает консоль. Это может все еще присоединение к существующей консоли или создавать новую с помощью AllocConsole.

Это делает Приложения Windows лучше удовлетворенными для приложений GUI или фоновых приложений, потому что Вы обычно не хотите создавать окно терминала для тех.

На большем количестве технического примечания, единственной разнице между Консолью и исполняемым файлом Windows один байт в заголовке PE exe файл. Переключение этого байта вручную (например, использование Hex-редактора) преобразовывают тип приложения. Это - хорошо опубликованный взлом, который используется для создания консольных приложений в VB6 (где этот тип приложения явно не поддерживался).

, Чтобы определить и изменить тип подсистемы приложения, необходимо считать части заголовка PE. Адрес данных подсистемы не фиксируется, хотя, потому что это - часть дополнительного заголовка файла, положение которого определяется адресом, сохраненным в заголовке файла DOS (в участнике e_lfanew). Этот адрес на самом деле указывает на эти _IMAGE_NT_HEADERS запись, которая, в свою очередь, включает IMAGE_OPTIONAL_HEADER32 структура. Это имеет int16 <глоток> 1) , участник звонил Subsystem. Значение участника 2 для Приложения Windows и 3 для консольного приложения. Другие подсистемы существуют (в частности, POSIX и ядро). Я записал маленькое приложение VB6 для изменения подсистемы приложения, которое может быть загружено от ActiveVB как исходный код.

формат PE очень хорошо не документируется, но этот документ может служить введением: Пиринг В PE: Тур по Формату .

Портируемого исполняемого файла Win32 <час>

<глоток> 1) Это действительно не противоречит моему заявлению, что только один байт отличается: старший значащий байт этого участника всегда 0. Только младшие значащие изменения байта.

74
ответ дан Konrad Rudolph 26 November 2019 в 18:44
поделиться

Помимо различия, упомянутого Konrad, консоль и Приложения Windows ведут себя по-другому при интерактивном вызове от командной строки:

при запуске консольного приложения командная строка не возвращается до выходов консольного приложения. При запуске приложения Windows команда сразу возвращается.

Это не верно для пакетных файлов; они будут всегда ожидать до выходов приложения. (Можно всегда использовать эти start команда для запущения приложения без ожидания.)

18
ответ дан oefe 26 November 2019 в 18:44
поделиться

Различие находится в способе, которым погашены приложения. При использовании консольного шаблона у Вас есть тупик, который разожжет в консоли. Если Вы уже работаете в консоли, она игнорирует вызов для вращения того.

К тому же, приложение Windows разработано с формой по умолчанию. Если Вы хотите убрать его, можно создать бесформенное приложение Windows Forms, которое является по существу консольным приложением без консоли.

До кишок приложения идет, они - по существу то же. Существенное различие прибавляется на этапе компиляции.

2
ответ дан Gregory A Beamer 26 November 2019 в 18:44
поделиться

Выполнения консольного приложения из командной строки окон (запускаются / выполненный / cmd)

приложение Окна А задается так, можно программировать приложение GUI, которое работает в среде Windows.

1
ответ дан Ólafur Waage 26 November 2019 в 18:44
поделиться

Цикл сообщений также является одним из отличий:

http://en.wikipedia.org/wiki/Message_loop_in_Microsoft_Windows

1
ответ дан 26 November 2019 в 18:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: