¿Cuál es la forma correcta de cerrar / salir de programas desde la línea de comandos, de manera similar a presionar el botón de cierre "X" en la esquina de la ventana?
Estoy tratando de cerrar Chrome en 3 versiones diferentes de Windows: win7 ultimate, win7 home, winXP
Bajo Ultimate y XP: TSKILL chrome
Debajo de casa TASKKILL /IM chrome.exe
TSKILL chrome
:
(Cierra Chrome, no hay errores de cmd,
pero se restaura el error de Chrome cuando se reinicia)
TASKKILL /IM chrome.exe
:
(Cierra Chrome, no hay errores de Chrome al relanzarlo,
pero errores en cmd: "imposible terminar procesos secundarios (aproximadamente 4-5), solo por la fuerza con /F
")
¿Debo ignorar los errores secundarios de cmd si en el reinicio de Chrome no se muestran errores? ?
windows
command-line
neoDev
fuente
fuente
Respuestas:
La forma correcta de cerrar / salir de un programa depende en última instancia del software. Sin embargo, en general, la mejor práctica es que los programas de Windows se cierren siempre que reciban el mensaje WM_CLOSE. Liberar adecuadamente la memoria y cerrar las manijas. Hay otros mensajes que pueden indicar el cierre de la aplicación, pero depende del autor del software cómo se maneja cada mensaje.
taskkill envía el mensaje WM_CLOSE y luego depende de la aplicación si se cierra correctamente. También es posible que desee utilizar la
/T
opción para señalar también procesos secundarios.Utilice la
/F
opción solo si desea forzar la finalización del proceso.Otras opciones incluirían enviar las teclas Alt + F4, usar PowerShell o aplicaciones de terceros.
Actualizar a pregunta actualizada
Ignora los errores. Chrome genera muchos procesos. Los errores se producen cuando un proceso no reconoce el mensaje WM_CLOSE que envía TASKKILL. Solo los procesos con un bucle de mensaje podrán recibir el mensaje, por lo tanto, los procesos que no tienen un bucle de mensaje generarán ese error. Lo más probable es que estos procesos sean extensiones y complementos de Chrome.
Para ocultar los errores captura la salida
Resumen: TASKKILL es la forma correcta a través de la línea de comandos para cerrar aplicaciones según su implementación WM_CLOSE y el KB de Microsoft que he vinculado .
fuente
>
es el operador de redireccionamiento para el cmd.exe ynul
es el vacío del espacio donde las cosas nunca volverán a ser escuchadas.Prueba NirCmd (Descarga: x86 x64 )
Tiene el comando "closeprocess" que está diseñado para cerrar procesos con gracia. Según su documento, no termina las aplicaciones, sino que las envía
WM_CLOSE
a todas las ventanas de nivel superior del proceso de destino.ejemplo de uso:
Si esto no funciona, apuesto a que su aplicación tiene un procedimiento de limpieza inusual. Me gustaría ver qué sucede dentro, así que avíseme cuál es su aplicación de destino.
fuente
La respuesta a esa pregunta se puede encontrar
here
( enlace de Microsoft ).Puede enviar
WM_CLOSE
mensajes a cualquier ventana que desee cerrar. Muchas ventanas manejanWM_CLOSE
para solicitar al usuario que guarde documentos.Una herramienta que hace esto correctamente es
@Kill
. Mira también SendMsg .No sé cómo hacer esto por lotes, pero podría usar el vbscript para esto. Simulando las teclas Alt+ F4(equivale a señal
WM_CLOSE
).Ejecute y observe el comportamiento de este script a continuación.
Here
es la lista de nombres clave para SendKeys.Cuando ejecuta el script, el bloc de notas está abierto, se escriben algunas palabras y luego se entrega una señal para cerrar el programa, vea la imagen a continuación.
Preguntas adicionales
¿Puedo iniciar un programa minimizado o en segundo plano con vbscript?
Si. Utiliza el siguiente código:
Para más información consulte el
Run Method
.¿Puede Chrome ir a alguna url en vbscript?
Si Chrome es el predeterminado, use:
Source
¿Hay alguna manera de enfocar una aplicación específica ( chrome.exe )?
Here
en un ejemploQuiero enviar alt + f4 SOLAMENTE a Chrome, independientemente de lo que esté haciendo con otras ventanas.
El siguiente código funciona en Windows 8 .
fuente
Hay algunas utilidades de línea de comandos que pueden enviar un
WM_SYSCOMMAND
mensaje adecuado (conSC_CLOSE
el comando) a la ventana de nivel superior de un programa. Estoy seguro de que al menos uno será mencionado en breve. (Entonces alguien mencionará AutoIt. Luego habrá una respuesta que muestre cómo hacerlo con PowerShell yCloseMainWindow()
).Se llama a la utilidad de línea de comandos que viene como un comando incorporado en TCC de JP Software , un intérprete de comandos y un procesador de script de comandos para Windows
TASKEND
.fuente
Muy bien, no voy a mentir. Vi esto en stackoverflow y pensé que era una pregunta desafiante. Así que acabo de pasar las últimas 2 horas escribiendo un código. Y aquí está....
Después de seguir los pasos a continuación, puede escribir "TaskClose notepad.exe" después de presionar "Inicio" y guardará automáticamente todos los archivos de bloc de notas no documentados en el escritorio. Se cerrará automáticamente chrome.exe y guardará la configuración de restauración.
Puede agregar y eliminar configuraciones adicionales para otras aplicaciones bajo las condiciones if. Por ejemplo:
Los archivos vbs y por lotes realizan los siguientes procedimientos:
ReturnAppList.bat: instalar en "C: \ windows \ system32 \"
TaskClose.bat: instalar en "C: \ windows \ system32 \" Y "C: \ Users \ YourUserName \"
TaskClose.vbs: instalar en "C: \ windows \ system32 \"
Fue muy divertido escribirlo y estoy más feliz de terminarlo que de mostrar la respuesta. ¡Que tengas una buena semana!
fuente