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 taskkill
comando, 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 taskkill
para 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 taskkill
seria 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)