Почему alt + F4 не закрывает cmd?

25

В Windows alt+ F4не закрывает cmd (Как в: WindowsKey+ R, cmd, Enter)

Насколько командное окно отличается от обычного окна?

balalakshmi
источник
Существуют сторонние программы для работы с горячими клавишами. Некоторые должны иметь возможность перехватывать Alt-F4 только для соответствующих окон командной строки и использовать альтернативное завершение работы (например, ввести «выход», или нажать кнопку «Закрыть», или использовать опцию «Закрыть» в системном меню). Очевидно, вы должны знать о возможном недостатке (см. Ответ Джеффса). Извините, я не могу дать рекомендации.
Steve314
Вы можете использовать Alt+Space->, Cчтобы закрыть его.
Bor691

Ответы:

19

Командное окно использует эти комбинации клавиш для различных приложений в окне эмуляции доз. Если Alt-F4 закрыл окно, возможно, будет невозможно использовать определенные утилиты. Если вы хотите исправить только клавиатуру, просто наберите, exitчтобы выйти.

Джефф Ф.
источник
какие определенные утилиты? Alt-F4 закрывает почти все окна в NT Systems, тогда почему командная строка является исключением?
Peeyush
1
Приложения до Windows NT в DOS. Я помню одну игру, в которой Alt + F4 вызывал меню сохранения для игры (я думаю, Wing Commander Armada). Поскольку он предназначен для эмуляции (или отображения) DOS, он должен принимать эту комбинацию клавиш, а не закрывать, чтобы эти приложения могли получать команду.
Джефф Ф.
ооо ... ладно ... Так что Microsoft, должно быть, все еще использует эту комбинацию для некоторых функций, в противном случае они уже должны были оказать поддержку.
Peeyush
15

С другой стороны, если вы хотите Alt+ F4закрыть окно консоли, вы можете использовать следующий скрипт AutoHotkey :

#IfWinActive, ahk_class ConsoleWindowClass
    !F4::WinClose, A

#IfWinActive
iglvzx
источник
6

Alt+ F4отправляет программе с фокусом WM_CLOSEсообщение .

Таким образом, cmdпрограмма либо намеренно настроена на игнорирование WM_CLOSEсообщений, либо, возможно, вообще не обрабатывает никаких сообщений.

DMA57361
источник
Это не совсем относится к окнам консоли Win32 - они принадлежат conhost(ранее csrss), и консольные приложения обрабатывают это по-разному.
Гравитация
@ Grawity, должным образом отметил, спасибо. Но похоже, что это может стать началом реального ответа на вопрос.
DMA57361
@grawity - я думал, что в Windows все еще было сообщение WM_CLOSE, обработанное как часть консольной программы. Не то, чтобы это имело большое значение - это ответ для программистов, работающих над исходным кодом cmd.exe, а не для пользователей, интересующихся обоснованием дизайна.
Steve314
1
Как видно из ответа iglvzx, консоли действительно закрываются в ответ на WM_CLOSE.
Synetech