Pourquoi alt + F4 ne ferme-t-il pas cmd?

25

Sous Windows, alt+ F4ne ferme pas cmd (comme dans: WindowsKey+ R, cmd, Enter)

Quelle est la différence entre la fenêtre de commande et une fenêtre normale?

balalakshmi
la source
Il existe des programmes de gestion de raccourcis clavier tiers. Certains devraient être en mesure d'intercepter Alt-F4 uniquement pour les fenêtres d'invite de commande pertinentes, et d'utiliser un arrêt alternatif (par exemple, tapez "quitter", ou cliquez sur le bouton Fermer, ou utilisez l'option "Fermer" du menu système). De toute évidence, vous devez être conscient des inconvénients possibles (voir la réponse de Jeffs). Désolé, je ne peux pas faire de recommandation.
Steve314
vous pouvez utiliser Alt+Space-> Cpour le fermer.
Bor691

Réponses:

19

La fenêtre de commande utilise ces combinaisons de touches pour différentes applications dans la fenêtre d'émulation de dos. Si Alt-F4 fermait la fenêtre, il pourrait être impossible d'utiliser certains utilitaires. Si vous voulez un correctif de clavier, tapez simplement exitpour quitter.

Jeff F.
la source
quels sont certains utilitaires? Alt-F4 ferme presque toutes les fenêtres dans les systèmes NT, alors pourquoi l'invite de commande est une exception?
Peeyush
1
Applications avant Windows NT sous DOS. Je me souviens d'un jeu où Alt + F4 a fait apparaître le menu de sauvegarde pour un jeu (Wing Commander Armada je crois). Comme il est conçu pour émuler (ou afficher) DOS, il doit accepter cette combinaison de touches et ne pas se fermer pour que ces applications puissent recevoir la commande.
Jeff F.
oh .. D'accord ... Donc, Microsoft doit toujours utiliser cette combinaison pour certaines fonctionnalités, sinon ils doivent avoir déjà fourni un support.
Peeyush
15

D'un autre côté, si vous cherchez à avoir Alt+ F4fermer la fenêtre de la console, vous pouvez utiliser le script AutoHotkey suivant :

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

#IfWinActive
iglvzx
la source
6

Alt+ F4envoie le programme avec focus le WM_CLOSEmessage .

Ainsi, le cmdprogramme est soit intentionnellement configuré pour ignorer les WM_CLOSEmessages, soit ne traite aucun message du tout.

DMA57361
la source
Cela ne s'applique pas entièrement aux fenêtres de la console Win32 - elles appartiennent à conhost(plus tôt - par csrss) et les applications de console le gèrent différemment.
grawity
@grawity, dûment noté, merci. Mais il semble que cela pourrait être le début de la vraie réponse à la question.
DMA57361
@grawity - Je pensais que dans Windows, il y avait toujours un message WM_CLOSE géré dans le cadre du programme de la console. Cependant, cela ne fait pas beaucoup de différence - c'est une réponse pour les programmeurs travaillant sur la source de cmd.exe, pas pour les utilisateurs curieux de la justification de la conception.
Steve314
1
Comme vous pouvez le voir avec la réponse d'iglvzx, les consoles se ferment en effet en réponse à WM_CLOSE.
Synetech