Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recuperer Titre des fenetres

20 réponses
Avatar
rikki92
Hello, Bonjour,

Voila apres plusieurs jours de recherche je m'en refere a vous.

Je cherche a recuperer par script le titre des fenetres en cours.
J'ai essayé les outils classiques, pslist, tlist, list aucune ne donne le
nom des fenetres..ou partiellement.Le meilleur etant tasklist /v sous xp..

Par contre et c'est ca qui me rend fou (?) c'est que le gestionnaire des
taches de windows onglet applications les donne bien lui..
Je recherche donc a avoir la meme chose que le gestionnaire des
taches...mais par script..tout simplement...ni plus ni moins ..

Ces fenetres dont j'essaye de recuperer le titre sont des fenetres
java..voila pourquoi certains scripts de process ne les retournenet pas .
j'ai essayé scriptomatic , avec recherche process, qui me donne que
l'objitem caption (mais ce n'est pas le title de la fenetre, arf..) ..

Bref je pense que ca doit etre assez simple en vbs ou autre mais pour
l'instant je nage..
Si vous pouviez m'aider, car pour l'instant je n'ai trouvé comme solution
que de faire un scan automatisé de copie d'ecran .et cela me prend bp de
ressources machine.. .ne riez pas .. ^^

Jai essaye aussi via wmi mais comme , l'ensemble tourne sous une image OS il
me renvoit les process de la station hote..
A votre bon coeur..

Merci ..car je deprime :-)

10 réponses

1 2
Avatar
Méta-MCI (MVP)
Bonsoir !

Merci du tuyau/lien ; ça peut toujours servir.

Sinon, avec Office, depuis la version 2003, il y a une fonction OCR intégrée, mais utilisable via
COM (OLE-automation). En couplant avec une copie d'écran, on doit pouvoir retrouver un
fonctionnement assez proche de textract.
Par contre, ce n'est pas tout prêt.

@-salutations

Michel Claveau
Avatar
moi
Notre ami Méta-MCI (MVP) tapota :

Bonsoir !

Je me demande bien pourquoi WinList() n'existe pas avec l'objet COM
de AutoIt3


Il est vrai que ce serveur COM a beaucoup de limitations.

Pour info, j'ai trouvé un moyen d'utiliser AutoIt complet comme un
(simili) serveur COM ; y compris le GUI d'AutoIt.
pour cela, j'ai créé un serveur COM en Python, qui sert de pont, et
qui pilote/communique avec une fenêtre AutoIt spécifique, par des
message (WM_COPYDATA). Vu de l'extérieur, l'utilisation est
identique à un serveur COM
quelconque. Cependant, il faut installer, en plus d'Autoit, Python +
Pywin32.
J'avais publié le truc sur un des forums AutoIt, mais ça n'a pas
soulevé en grand enthousiasme. Peut-être le besoin n'est-il pas si
grand ?


salut,

... sans doute, puisqu'on se trouve là
à l'intersection de deux populations déjà réduites...
Ceci étant, l'existence d'autoItX prouve
qu'au moins une autre personne y voit un avantage ;o)
c'est un début plein d'avenir ;o)))

A+

HB


Avatar
Jean
, on peut écrire ceci:

PS> get-process | where {$_.MainWindowTitle} | format-table
MainWindowTitle, Name, Id -a


Celle-là me semble vraiment très bien.
Il me semblait bien qe PowerShell ne pouvait pas passer à côté de ça.

Amicalement,

--
Jean - JMST
Belgium

Avatar
Gilles LAURENT [MVP]
"Jean" a écrit dans le message de
news:
||| get-process | where {$_.MainWindowTitle} | format-table
||| MainWindowTitle, Name, Id -a
|
| Celle-là me semble vraiment très bien.
| Il me semblait bien qe PowerShell ne pouvait pas passer à côté de ça.

Oui mais cela ne reproduit pas exactement le gestionnaire des tâches
(onglet Applications) :
- Seul le titre de la première instance Internet Explorer est affiché
- Les fenêtres de l'explorateur de fichiers sont ignorées

Pour compléter la liste des fenêtres, il me semble donc nécessaire de
s'appuyer également sur l'objet COM Shell.Application

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
Jean
- Seul le titre de la première instance Internet Explorer est affiché


Pas lorsque j'ai essayé le script de Jacques.
En réessayant, j'ai effectivement eu ce phénomène.
Si vous fermez alors l'instance IE dont le titre s'affiche dans
Powershell, les titres des autres instances d'IE (ou nouvelles)
apparaîtront dans PowerShell.
Je ne sais si il y a une explication logique à ce phénomène ou si il
faut parler d'un bug.
Sous réserve, apparemment celà ne concernerait que la toute première
instance d'IE exécutée après un démarrage "frais" de l'ordinateur.

- Les fenêtres de l'explorateur de fichiers sont ignorées


Mais les explorateurs en question ont-ils un titre ?

Amicalement,

--
Jean - JMST
Belgium

Avatar
Gilles LAURENT [MVP]
"Jean" a écrit dans le message de
news:
|| - Seul le titre de la première instance Internet Explorer est affiché
|
| Pas lorsque j'ai essayé le script de Jacques.
| En réessayant, j'ai effectivement eu ce phénomène.
| Si vous fermez alors l'instance IE dont le titre s'affiche dans
| Powershell, les titres des autres instances d'IE (ou nouvelles)
| apparaîtront dans PowerShell.
| Je ne sais si il y a une explication logique à ce phénomène ou si il
| faut parler d'un bug.
| Sous réserve, apparemment celà ne concernerait que la toute première
| instance d'IE exécutée après un démarrage "frais" de l'ordinateur.

La commandlet Get-Process retourne tous les processus en cours
d'exécution. Donc je ne vois pas comment celle-ci pourrait transmettre
via le pipeline un seul processus gérant plusieurs fenêtres (la
propriété MainWindowTitle de l'objet Process devrait alors être une
collection)

|| - Les fenêtres de l'explorateur de fichiers sont ignorées
|
| Mais les explorateurs en question ont-ils un titre ?

Les fenêtres de l'explorateur de fichiers (explorer.exe) possèdent
toujours un titre !

Un exemple illustré ici :
http://glsft.free.fr/index.php?option=com_content&task=view&id5&Itemid(

Me trompe-je ?

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
Jean
"Jean" a écrit dans le message de
news:
- Seul le titre de la première instance Internet Explorer est affiché


Pas lorsque j'ai essayé le script de Jacques.
En réessayant, j'ai effectivement eu ce phénomène.
Si vous fermez alors l'instance IE dont le titre s'affiche dans
Powershell, les titres des autres instances d'IE (ou nouvelles)
apparaîtront dans PowerShell.
Je ne sais si il y a une explication logique à ce phénomène ou si il
faut parler d'un bug.
Sous réserve, apparemment celà ne concernerait que la toute première
instance d'IE exécutée après un démarrage "frais" de l'ordinateur.


La commandlet Get-Process retourne tous les processus en cours d'exécution.
Donc je ne vois pas comment celle-ci pourrait transmettre via le pipeline
un seul processus gérant plusieurs fenêtres (la propriété MainWindowTitle
de l'objet Process devrait alors être une collection)



J'avais pensé à un champ aussi dans un premier temps, mais ce n'était
pas le cas.
Quelque chose empêche Powershell dans ce cas de figure d'afficher plus
d'une instance iexplore.
Bug IE ? Bug .Net ? Bug PowerShell ? Logique IE ? Logique Windows ?

Je dois dire que la première fois que j'ai exécuté le script de Jacques
c'était sous XP alors que la seconde fois c'était sous Vista.
Après avoir fait la manipulation que je vous indiquais (fermer la
"seule" fenêtre IE dont le titre s'affiche dans PowerShell) je ne suis
plus parvenu à reproduire ce problème (même après un fresh reboot comme
je le suggérais).
L'idéal pour comprendre serait de trouver un méthode de reproduction du
problème.

- Les fenêtres de l'explorateur de fichiers sont ignorées


Mais les explorateurs en question ont-ils un titre ?


Les fenêtres de l'explorateur de fichiers (explorer.exe) possèdent toujours
un titre !



Je connais très mal Vista que je n'utilise qu'occasionellement sur une
machine qui ne m'appartient pas mais j'avais constaté que lorsque l'on
ouvre une fenêtre de l'Explorateur il n'y a plus de titre à proprement
parler dans la barre de titre, le chemin du dossier est divisé en
listbox, un clic sur l'icône à gauche de ceux-ci affichent le chemin
"en clair" dans une inputbox ... donc tout semble donc se passer dans
des contrôles.
Je me suis donc dit un peu hâtivement que tout se passait sous Vista
sans attribut title pour l'explorateur.
Effectivement, après vérification, sous XP comme sous Vista Powershell
ne retourne pas les titres des fenêtres explorer.
Pourquoi ? Je ne sais pas.

Un exemple illustré ici :
http://glsft.free.fr/index.php?option=com_content&task=view&id5&Itemid(



"Erreur 500 - Erreur interne du serveur"

Me trompe-je ?


Amicalement,

--
Jean - JMST
Belgium



Avatar
Jean
Effectivement, après vérification, sous XP comme sous Vista Powershell ne
retourne pas les titres des fenêtres explorer.
Pourquoi ? Je ne sais pas.



J'ai posé la question sur microsoft.public.windows.powershell dans le
message d'id

J'ai bien trouvé ça :
http://www.microsoft.com/technet/scriptcenter/resources/qanda/feb07/hey0202.mspx

"Unfortunately, there’s one minor drawback to this command: it doesn’t
return any Windows Explorer windows (for example, a window open to
C:Scripts)."

Mais ils ne disent pas pourquoi (sécurité ? vraiment ?) ...

--
Jean - JMST
Belgium

Avatar
Méta-MCI \(MVP\)
Bonsoir !

Mais les explorateurs en question ont-ils un titre ?


(Vista)
Les fenêtres de l'explorateur ont bien un titre. Ce titre contient simplement le chemin affiché.
Il est accessible (fournis) par les API de Windows. Je les retrouve aussi bien avec AutoIt (fonction
prédéfinie) qu'avec Python (API direct).

Sur ce point, le comportement de Vista est similaire à XP. Même si la barre d'adresse a un
comportement particulier (comme vous l'avez signalé : groupe de listes alternant avec champ input).
Au passage, le raccourci-clavier Alt-D qui devrait amener sur le champ adresse (c'est marqué dans
l'aide) ne fonctionne pas avec l'explorateur (il fonctionne OK avec IE)).

@-salutations

Michel Claveau

Avatar
Jean
Il est accessible (fournis) par les API de Windows. Je les retrouve aussi
bien avec AutoIt (fonction prédéfinie) qu'avec Python (API direct).


Je viens de faire un petit essais.
C'est .Net qui ne veut pas.

J'ai pris le C# Express offert par Jacques il y a peu et j'ai fait un
projet qui liste les titres des fenêtres des processus (code à la fin,
il suffit de mettre une listbox sur une form) ... pas de titres pour
les instances Explorer.

J'ai ensuite consulté la doc de MainWindowTitle en espérant voir en
rose bonbon que les fenêtres des instances Explorer n'étaient pas
exposées et en vert pâle pourquoi elles ne l'étaient pas ... mais rien
:
http://msdn2.microsoft.com/fr-fr/library/system.diagnostics.process.mainwindowtitle(VS.80).aspx

L'article des Scripting Guys qualifie cette restriction de mineure, le
mieux sera sans doutes (malheureusement ?) de se mettre à ce diapason.

Le code express sharp c :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Shown(object sender, EventArgs e)
{
Process[] collProcess = Process.GetProcesses();
foreach (Process P in collProcess)
{
if (P.MainWindowTitle != "")
{
listBox1.Items.Add(P.MainWindowTitle);
}
}

}

private void Form1_Load(object sender, EventArgs e)
{
listBox1.Dock = DockStyle.Fill;
}
}
}

Amicalement,

--
Jean - JMST
Belgium

1 2