Sim, há. É Alt+F4.
Esta é a combinação chave para terminar um programa . A única razão pela qual não funciona como anunciado é a ignorância dos programadores que se recusam a seguir as directrizes de design da Microsoft.
Este problema persistiria com qualquer outra tecla de atalho também. Só se poderia criar uma solução personalizada com AutoHotKey (ou ferramentas semelhantes) que mata o processo. Mas isto muito provavelmente fá-lo-ia perder muito trabalho. Como este é um método de força bruta para sair de um processo.
Quero saber mais!
OK, tanto quanto sei, há várias maneiras de uma aplicação Windows poder ser terminada.
- afixar um
WM_CLOSE
mensagem de janela na janela principal da aplicação.
- Destruindo a janela principal da aplicação.
- Terminando o processo.
A primeira via é a clean way. A forma como se pretende fechar uma aplicação. Isto é a mesma coisa que Alt+F4 funciona. Premindo Alt+F4, basta enviar a mensagem WM_CLOSE
para a janela da aplicação.
Agora, vejamos as 3 formas em ordem inversa.
terminando um processo
No Windows, uma aplicação vive num processo . Dentro desse processo, a aplicação pode criar um window . A janela é o que verá no seu ambiente de trabalho e com o que irá interagir.
Assim, se o processo for o root de uma aplicação, se a terminar, tudo o resto desaparecerá também. Portanto, isto seria óptimo para fully terminar uma aplicação. Mas isto _ matará_ a aplicação tão abruptamente, que não terá qualquer hipótese de guardar quaisquer dados críticos no disco.
Portanto, isto não seria recomendado!
Destruir a janela principal da aplicação
Como acabámos de saber, a janela principal da aplicação é apenas parte do process. Portanto, se apenas destruirmos essa janela, ainda teremos o processo a empestar o local :(
E isso seria ainda mais difícil de se livrar do que a aplicação teria sido.
Esta é muito provavelmente a abordagem mais desagradável para tentar acabar com uma aplicação. Fique longe!
Afixar uma mensagem WM_CLOSE
Windows é um sistema operativo baseado em mensagens. Ou seja, os componentes falam uns com os outros, enviando uns aos outros pequenas mensagens.
Uma destas mensagens é a WM_CLOSE
mensagem.
Se uma aplicação receber esta mensagem, fica acordado que esta aplicação deve apreender toda a acção e depois a vida.
Mas cada programador pode decidir sobre a sua própria forma de lidar com a mensagem.
Como a documentação nos disse anteriormente, o comportamento default* seria chamar DestroyWindow
e, assim, executar a nossa abordagem de saída da aplicação #2.
Com a pequena diferença de que, esta vez* , é intencional e o programa tem todas as hipóteses de guardar dados críticos.
Conclusão
Portanto, como podem ver, estamos praticamente à mercê de cada programador aqui. Ou corremos o risco de perder dados (você não quer correr esse risco!).