Verificar si un programa está en ejecución

brucine Mensajes publicados 24727 Fecha de registro   Estado Miembro Última intervención   -  
brucine Mensajes publicados 24727 Fecha de registro   Estado Miembro Última intervención   -

Hola,

Supongamos que quiero ver durante cuánto tiempo se ha ejecutado un programa, y que deseo hacerlo para cualquier programa cuya ruta pueda ingresar en mi script en una variable: para empezar, no hay problema, lo lanzaré con START y registraré la hora del sistema.

Cuando lo cierre esta vez de manera gráfica, puedo probar con el comando TASKLIST, realzado o no con conmutadores, si el proceso está abierto, y tan pronto como ya no lo esté, registraré nuevamente la hora del sistema y haré la diferencia.

Con, por ejemplo (cualquier cosa...) el Bloc de notas, puedo escribir algo como:

tasklist | find /i "Notepad.exe">nul && GOTO RUN || GOTO STOP

Ahora los problemas comienzan si quiero hacer lo mismo (siempre cualquier cosa...) con la calculadora de Windows 10 o 11 de la nueva versión (ya no es calc.exe, sino una aplicación con un nombre críptico) o, más generalmente, cualquier programa cuyo nombre del ejecutable sea diferente al del proceso: no puedo especificar el nombre del proceso a menos que vaya a buscarlo en el administrador de tareas.

¿Existe alguna manera de que pueda obtener, a partir del nombre del ejecutable en cuestión, el nombre del proceso que se lanzará?

Gracias.

1 respuesta

barnabe0057 Mensajes publicados 14329 Fecha de registro   Estado Colaborador Última intervención   4 930
 

Hola,

Según mis investigaciones, parece que el nombre del proceso ("image name" en inglés) es siempre el mismo que el del ejecutable:

https://stackoverflow.com/questions/35173913/is-the-process-name-always-the-name-of-the-exe

Si inicias un programa mediante el comando START, supone que conoces su ruta, y si conoces la ruta, puedes encontrar el nombre del ejecutable, por lo que el ciclo se cierra, como se suele decir.

Un ejemplo con la calculadora de Windows 10:

"C:\Program Files\WindowsApps\Microsoft.WindowsCalculator_11.2210.0.0_x64__8wekyb3d8bbwe\CalculatorApp.exe"

0
brucine Mensajes publicados 24727 Fecha de registro   Estado Miembro Última intervención   4 152
 

Hola,

Si tú lo dices...

Tengo el recuerdo de haber estado expuesto a esta situación hace tiempo, no recuerdo por supuesto para qué programa y estoy siendo quisquilloso ya que, de hecho, la cuestión es muy teórica en lo que respecta a "generalizar a cualquier programa".

No entiendo nada de programación, el nombre mostrado en el administrador de tareas sería el valor de Assembly Information Title que dependería únicamente de la fantasía del desarrollador (aunque de hecho no sería común que buscara el mediodía a las 14 horas y utilizara un nombre diferente al del ejecutable).

https://stackoverflow.com/questions/56708062/how-to-have-a-different-process-name-for-current-process-name-in-task-manager
https://stackoverflow.com/questions/13604777/set-task-manager-file-name


En tal hipótesis, de todos modos hay un sorteo aproximado (puede haber un intruso entre tanto) que no he probado: TASKLIST a la entrada del script, START del programa, TASKLIST inmediatamente después y extraer la línea adicional entre los dos Logs.

0
barnabe0057 Mensajes publicados 14329 Fecha de registro   Estado Colaborador Última intervención   4 930 > brucine Mensajes publicados 24727 Fecha de registro   Estado Miembro Última intervención  
 

Para resumir y concluir:

.

1) el nombre del proceso es siempre idéntico al nombre del ejecutable, es el nombre mostrado por el comando TASKLIST

2) el administrador de tareas no muestra por defecto el nombre del proceso, sino el título del proceso, este título corresponde al valor de "Assembly Information Title" en el marco de un proyecto de Visual Studio

3) el nombre del proceso se puede obtener a partir del administrador de tareas, accediendo a los detalles del proceso

.

Volviendo a tu problema, efectivamente existe la posibilidad de hacer un TASKLIST antes y después, pero no se recomienda porque no se puede descartar la posibilidad de un intruso que falsearía la manipulación.

.

Para mí, la mejor solución es "hardcodear" el nombre del proceso a partir del nombre del ejecutable.

0
brucine Mensajes publicados 24727 Fecha de registro   Estado Miembro Última intervención   4 152 > barnabe0057 Mensajes publicados 14329 Fecha de registro   Estado Colaborador Última intervención  
 

De todos modos, ninguno de nosotros ha señalado que, ya sea que el nombre del proceso sea el mismo o no, y aunque no hubiera ningún intruso, mi pregunta es absurda: no se puede a la vez lanzar gráficamente un programa para extraer mediante diferencia TASKLIST en una variable ese nombre destinado a lanzar el programa en cuestión en el mismo script.

0