решение для одной ячейки:
=ARRAYFORMULA(IF(COUNTIFS('Form Responses 1'!B2:B, "="&$A$7,
'Form Responses 1'!E2:E, "=John Smith"),
'Form Responses 1'!F2:F, " "))
Единственное различие - то, что консольное приложение всегда порождает консоль, если оно не запускается с одного (или консоль активно подавлена на запуске). Приложение 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. Только младшие значащие изменения байта.
Помимо различия, упомянутого Konrad, консоль и Приложения Windows ведут себя по-другому при интерактивном вызове от командной строки:
при запуске консольного приложения командная строка не возвращается до выходов консольного приложения. При запуске приложения Windows команда сразу возвращается.
Это не верно для пакетных файлов; они будут всегда ожидать до выходов приложения. (Можно всегда использовать эти start
команда для запущения приложения без ожидания.)
Различие находится в способе, которым погашены приложения. При использовании консольного шаблона у Вас есть тупик, который разожжет в консоли. Если Вы уже работаете в консоли, она игнорирует вызов для вращения того.
К тому же, приложение Windows разработано с формой по умолчанию. Если Вы хотите убрать его, можно создать бесформенное приложение Windows Forms, которое является по существу консольным приложением без консоли.
До кишок приложения идет, они - по существу то же. Существенное различие прибавляется на этапе компиляции.
Выполнения консольного приложения из командной строки окон (запускаются / выполненный / cmd)
приложение Окна А задается так, можно программировать приложение GUI, которое работает в среде Windows.
Цикл сообщений также является одним из отличий:
http://en.wikipedia.org/wiki/Message_loop_in_Microsoft_Windows