Fechando o programa em foco na linha de comando

Fechando o programa em foco na linha de comando

Existe uma maneira de fechar um programa que está em foco na linha de comando?

Estou executando um programa de controle de voz que executa comandos em segundo plano. A única maneira que conheço de fazer isso é com o taskkillcomando, que exige que eu insira um nome de processo específico. Eu quero que ele mate qualquer processo que esteja em foco no momento, então se o Firefox estiver focado, ele mata isso e se o bloco de notas estiver focado, ele mata isso.

Estou usando o win 10 caso isso seja relevante.

Responder1

Infelizmente, não há ligação entre o ambiente de comando e a GUI. Quando você usa taskkillpara matar um aplicativo, ele está agindo noprocesso, não a janela. Esta é uma distinção importante porque, ao eliminar um processo, você o faz com força; o mesmo que se tivesse travado. Provavelmente não é isso que você deseja fazer na maior parte do tempo.

Normalmente, pressionar Alt+ F4fechará a janela atualmente em foco (ou Escse for uma caixa de diálogo). Este atalho equivale a escolher Arquivo -> Sair na barra de menu ou clicar no botão Fechar na barra de título.

Para fazer isso em um prompt de comando, você precisa de um script que possa identificar a janela ativa e enviar pressionamentos de tecla. Isso pode ser feito com o PowerShell. O Windows Script Host (ou seja, VBScript ou JavaScript) também pode fazer isso. Mas isso exigiria algumas habilidades de programação. Programas como AutoHotKey ou KiXtart são outra opção.

Basicamente, você chamaria o script da linha de comando por meio do seu programa de controle de voz.

Observe que o aplicativo fará sua rotina normal de fechamento (por exemplo, solicitando que você salve seu trabalho, etc.), portanto, não é um encerramento forçado, como taskkillseria o caso.

Responder2

Existe uma maneira de fechar qualquer programa que esteja em foco por meio do Shell do Windows?

Isso não é possível porque para digitar qualquer comando no shell do Windows você deve mudar o foco para o shell.

O programa (janela) anteriormente focado perderá o foco.

Até onde eu sei, não existe um comando shell do Windows que feche oanteriormenteprograma focado.

Responder3

AutoItpode fazer isso. Apenas vários comandos. Procurar:

$pid=WinGetProcess([ACTIVE])
ProcessClose($pid)

informação relacionada