handle de la fenêtre active [Résolu][Batch] - Shell/Batch - Programmation
Marsh Posté le 11-07-2008 à 14:47:26
j'ai fait "echo %~dp0%" alors que notepad était au premier plan.
Je trouve "C:\Documents and Settings\****\Bureau", alors que j'attends le handle du notepad ouvert.
J'ai surement oublié quelque chose de fondamentale ^^'
Marsh Posté le 11-07-2008 à 16:18:05
On ne peut pas connaitre la fenetre active en batch, sauf si c'est le batch qui la lancé, mais dans ce cas là on la connait...
Après je ne sais pas trop de quoi tu parles en disant "handle", mais je ne pense pas qu'on peut récuperer ça en batch, le PID on peut par contre.
Marsh Posté le 11-07-2008 à 20:10:53
Heu... je vois pas trop ce que c'est que le PID ^^'
Je cherche le numéraux qui peut identifier une fenêtre.
Je sait qu'on peut le retrouver si on connait une partit du nom de celle-ci (déjà fait). Mais là: on ne connait pas son nom, elle est seulement au premier plan.
Marsh Posté le 12-07-2008 à 12:35:21
vengil a écrit : Heu... je vois pas trop ce que c'est que le PID ^^' |
De mémoire le PID c'est le code qui a été attribué à un processus.
En batch tu peux avoir un tableau des processus et de leur PID avec la fonction tasklist.
Quand tu parles du 'numéro qui peut identifier une fenêtre', tu dois parler du PID sans le savoir.
Marsh Posté le 12-07-2008 à 13:13:26
En sachant seulement qu'elle est au premier plan, en batch on ne peut pas récuperer le PID.
En connaissant le nom du processus on peut.
Marsh Posté le 12-07-2008 à 13:33:00
J'ai fait quelques tests: Le PID est spécifique d'un programme, alors que le handle est spécifique d'une fenêtre donnée.
En clair, si j'ouvre deux fenêtres firefox: je trouve un PID pour le processus "firefox.exe", et je trouve aussi un numéro différant pour chacune des fenêtres firefox ouvertes. Ceci permet d'agir seulement sur la fenêtre voulu, et non sur le processus entier.
Tous ceci est possible par batch si on connait une partie du nom de la fenêtre.
Windows doit bien stocker quelque par l'information qui stipule que telle fenêtre est active et que telle autre est en arrière plan. Il me semble que cette tâche devrait être possible par batch...
Marsh Posté le 12-07-2008 à 20:41:22
En batch, d'après ce que je sais, c'est a dire beaucoup je pense, c'est impossible de savoir quelle fenetre est active.
En vbs peut etre ?
Je rapelle que le batch n'est pas un language de programmation... On peut coder des bons trucs mais sa va pas trop loin non plus.
Essaye de chercher du coté d'AutoIt qui rajoute certaine fonction au batch, mais sinon je pense que le vbs te sera plus approprié peut etre ?
Marsh Posté le 14-07-2008 à 10:05:54
Bon, je vais chercher de ce côté là.
Merci.
Marsh Posté le 19-10-2008 à 23:31:10
blastkiller a écrit : En batch, d'après ce que je sais, c'est a dire beaucoup je pense, c'est impossible de savoir quelle fenetre est active. |
Et si !
Voila que trois mois après ce poste je trouve la réponse par hasard : NirCmd
Avec cette commande d'à peine 30 ko, on peut faire un nombre impressionnant de choses. Notamment: changer le titre de la fenêtre au premier plan. Une fois changé, le handle est très facilement trouvable.
Mais les fonctionnalité ne s'arrête pas là: On peut aussi fermer une fenêtre bien précise sans fermer tous le processus ! Se qui fini de résoudre un autre de mes post.
Je donne le lien du forum qui m'a permit de trouver: http://astase.com/forums/
J'espère que ça aidera du monde
Marsh Posté le 11-07-2008 à 12:27:45
Bonjours,
Petite question de débutant pour batch:
Je voudrais savoir qu'elle est la commande qui permet de renvoyer le handle de la fenêtre active sous variable. (sans connaitre le nom de la fenêtre)
Si elle n'est pas d'origine dans systèm32, où la télécharger ?
Merci
Message édité par vengil le 19-10-2008 à 23:37:17