¿Hay alguna manera de cerrar un programa que actualmente está enfocado desde la línea de comando?
Estoy ejecutando un programa de control por voz que ejecuta comandos en segundo plano. La única forma que conozco de hacerlo es con el taskkill
comando, que requiere que ingrese un nombre de proceso específico. Quiero que elimine cualquier proceso que esté actualmente enfocado, de modo que si Firefox está enfocado, lo elimina y si el Bloc de notas está enfocado, lo elimina.
Estoy usando win 10 en caso de que sea relevante.
Respuesta1
Desafortunadamente, no existe ningún vínculo entre el entorno de comando y la GUI. Cuando usas taskkill
para cerrar una aplicación, actúa sobre elproceso, no la ventana. Esta es una distinción importante porque al matar un proceso, lo estás haciendo con fuerza; lo mismo que si se hubiera estrellado. Probablemente esto no sea lo que quieras hacer la mayor parte del tiempo.
Normalmente, presionar Alt+ F4cerrará la ventana actualmente enfocada (o Escsi es un cuadro de diálogo). Este acceso directo equivale a elegir Archivo -> Salir en la barra de menú o hacer clic en el botón Cerrar en la barra de título.
Para hacerlo desde un símbolo del sistema, necesitaría una secuencia de comandos que pueda identificar la ventana activa y enviarle pulsaciones de teclas. Esto se puede hacer con PowerShell. El Windows Script Host (es decir, VBScript o JavaScript) también puede hacerlo. Pero requeriría algunas habilidades de programación. Programas como AutoHotKey o KiXtart son otra opción.
Básicamente, estarías llamando al script desde la línea de comando a través de tu programa de control de voz.
Tenga en cuenta que la aplicación realizará su rutina de cierre normal (por ejemplo, solicitándole que guarde su trabajo, etc.), por lo que no es una terminación forzada como taskkill
lo haría.
Respuesta2
¿Hay alguna manera de cerrar cualquier programa que esté actualmente enfocado a través del Shell de Windows?
Eso no es posible porque para escribir cualquier comando en el shell de Windows debes cambiar el foco al shell.
El programa (ventana) previamente enfocado perderá el foco.
Hasta donde yo sé, no existe ningún comando de shell de Windows que cierre elpreviamenteprograma enfocado.
Respuesta3
AutoItlo puede hacer. Sólo varios comandos. Buscar:
$pid=WinGetProcess([ACTIVE])
ProcessClose($pid)