Vérifier si un programme est lancé

brucine Messages postés 18025 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 2 décembre 2024 - 28 févr. 2024 à 13:04
brucine Messages postés 18025 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 2 décembre 2024 - 29 févr. 2024 à 23:43

Bonjour,

Supposons que je veuille voir pendant combien de temps un programme a été exécuté, et que je veuille le faire pour n'importe quel programme dont il me plaira d'entrer dans mon script le chemin dans une variable: pour le début, pas de problème, je vais le lancer par START et Logger l'heure système.

Quand je le fermerai cette fois-ci par voie graphique, je peux tester par la commande TASKLIST agrémentée ou pas de commutateurs si le process est ouvert, dès qu'il ne l'est plus je Logge à nouveau l'heure système et je fais la différence.

Avec par exemple (n'importe quoi...) le Bloc Notes, je peux écrire quelque chose du genre:
 

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

Maintenant les ennuis commencent si je veux faire la même chose  (toujours n'importe quoi...) avec la calculatrice Windows 10 ou 11 nouvelle mouture (ce n'est plus calc.exe mais une application avec un nom sibyllin) ou plus généralement tout programme dont le nom de l'exécutable est différent de celui du process: je ne peux pas spécifier le nom du process sauf à aller le chercher dans le gestionnaire des tâches.

Existe-t-il un moyen que me soit retourné à partir du nom de l'exécutable en question le nom du process qu'il va lancer?

Merci.

1 réponse

barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
29 févr. 2024 à 06:39

Bonjour,

D'après mes recherches il apparait que le nom du processus ("image name" en anglais) est toujours le même que celui de l'exécutable :

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

Si tu lances un programme via la commande START, cela suppose que tu connaisses son chemin, et si tu connais le chemin tu peux trouver le nom de l'exécutable, donc la boucle est bouclée comme on dit.

Un exemple avec la calculatrice de Windows 10 :

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

0
brucine Messages postés 18025 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 2 décembre 2024 2 650
29 févr. 2024 à 08:08

Bonjour,

Si tu le dis...

J'ai le souvenir d'avoir été exposé à cette situation il y a longtemps, je ne me souviens bien sûr plus pour quel programme et je pinaille puisque, en effet, la question est très théorique s'agissant de la "généraliser à n'importe quel programme".

Je n'entends rien à la programmation, le nom affiché dans le gestionnaire de tâches serait la valeur de Assembly Information Title qui relèverait de la seule fantaisie du développeur (même si en effet il ne serait pas commun qu'il cherche midi à 14 heures et utilise un nom différent de celui de l'exécutable).

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 telle hypothèse, il y a de toute façon un contournement approximatif (il peut y avoir un intrus entre temps) que je n'ai pas testé: TASKLIST à l'entrée du script, START du programme, TASKLIST aussitôt après et extraire la ligne supplémentaire entre les deux Log.

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > brucine Messages postés 18025 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 2 décembre 2024
Modifié le 29 févr. 2024 à 18:55

Pour résumer et conclure :

.

1) le nom du processus est toujours identique au nom de l'exécutable, c'est le nom affiché par la commande TASKLIST

2) le gestionnaire de tâches n'affiche pas par défaut le nom du processus mais le titre du processus, ce titre correspond à la valeur de "Assembly Information Title" dans le cadre d'un projet Visual Studio

3) le nom du processus peut être obtenu à partir du gestionnaire de tâches, en allant dans les détails du processus

.

Pour en revenir à ton problème il y a effectivement la possibilité de faire un TASKLIST avant et après, mais ça n'est pas conseillé car on ne peut pas écarter la possibilité d'un intrus qui fausserait la manipulation.

.

Pour moi la meilleure solution est de "hardcoder" le nom du processus à partir du nom de l'exécutable.

0
brucine Messages postés 18025 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 2 décembre 2024 2 650 > barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024
29 févr. 2024 à 23:43

De toute façon, aucun de nous n'a relevé que, que le nom du process soit le même ou pas et quand bien même il n'y aurait pas d'intrus, ma question est absurde: on ne peut pas à la fois lancer par voie graphique un programme pour en extraire par différence TASKLIST dans une variable ce nom destiné à lancer le programme en question dans le même script.

0