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..
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..
En l'occurrence, location* correspond aux deux propriétés locationName et locationURL. Ca devrait correspondre à ce que tu cherches.
Ecrire l'équivalent en VBScript ne devrait pas être un gros problème, Shell.Application étant un objet COM et les objets COM étant accessibles en VBScript.
Jacques
"rikki92" <rikki92@discussions.microsoft.com> wrote in message
news:CBB72AE1-C0D2-4FBD-8A12-28F81C4AF835@microsoft.com...
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..
En l'occurrence, location* correspond aux deux propriétés locationName et
locationURL. Ca devrait correspondre à ce que tu cherches.
Ecrire l'équivalent en VBScript ne devrait pas être un gros problème,
Shell.Application étant un objet COM et les objets COM étant accessibles en
VBScript.
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..
En l'occurrence, location* correspond aux deux propriétés locationName et locationURL. Ca devrait correspondre à ce que tu cherches.
Ecrire l'équivalent en VBScript ne devrait pas être un gros problème, Shell.Application étant un objet COM et les objets COM étant accessibles en VBScript.
Jacques
rikki92
Merci Jacques de t' interesser a mon probleme. J'ai lu et parcouru le web de long en large sans rien trouver . J'ai power shell , mais je ne l'avais pas encore installé sur ma machine.
Pour info , j'avais trouvé un tout debut de reponse pour recuperer les windows title en vbs, mais ne connaissant rien en vbs . De plus la personne l'encapsulait dans une box. http://www.vbaccelerator.com/home/VB/Code/Libraries/Windows/Enumerating_Windows/article.asp Il donnait meme l'exe , tout fait .Mais bon ce n'etait pas un script en ligne de commande Je vais tester au plus vite ta solution .. :-) Car j'en ai un peu assez d'avoir une machine qui tourne a 60 % continuellement .. avec le bruit du ventilo qui souffle .
Thx .
"rikki92" wrote in message news:
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..
En l'occurrence, location* correspond aux deux propriétés locationName et locationURL. Ca devrait correspondre à ce que tu cherches.
Ecrire l'équivalent en VBScript ne devrait pas être un gros problème, Shell.Application étant un objet COM et les objets COM étant accessibles en VBScript.
Jacques
Merci Jacques de t' interesser a mon probleme.
J'ai lu et parcouru le web de long en large sans rien trouver .
J'ai power shell , mais je ne l'avais pas encore installé sur ma machine.
Pour info , j'avais trouvé un tout debut de reponse pour recuperer les
windows title en vbs, mais ne connaissant rien en vbs . De plus la personne
l'encapsulait dans une box.
http://www.vbaccelerator.com/home/VB/Code/Libraries/Windows/Enumerating_Windows/article.asp
Il donnait meme l'exe , tout fait .Mais bon ce n'etait pas un script en
ligne de commande
Je vais tester au plus vite ta solution .. :-)
Car j'en ai un peu assez d'avoir une machine qui tourne a 60 %
continuellement .. avec le bruit du ventilo qui souffle .
Thx .
"rikki92" <rikki92@discussions.microsoft.com> wrote in message
news:CBB72AE1-C0D2-4FBD-8A12-28F81C4AF835@microsoft.com...
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..
En l'occurrence, location* correspond aux deux propriétés locationName et
locationURL. Ca devrait correspondre à ce que tu cherches.
Ecrire l'équivalent en VBScript ne devrait pas être un gros problème,
Shell.Application étant un objet COM et les objets COM étant accessibles en
VBScript.
Merci Jacques de t' interesser a mon probleme. J'ai lu et parcouru le web de long en large sans rien trouver . J'ai power shell , mais je ne l'avais pas encore installé sur ma machine.
Pour info , j'avais trouvé un tout debut de reponse pour recuperer les windows title en vbs, mais ne connaissant rien en vbs . De plus la personne l'encapsulait dans une box. http://www.vbaccelerator.com/home/VB/Code/Libraries/Windows/Enumerating_Windows/article.asp Il donnait meme l'exe , tout fait .Mais bon ce n'etait pas un script en ligne de commande Je vais tester au plus vite ta solution .. :-) Car j'en ai un peu assez d'avoir une machine qui tourne a 60 % continuellement .. avec le bruit du ventilo qui souffle .
Thx .
"rikki92" wrote in message news:
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..
En l'occurrence, location* correspond aux deux propriétés locationName et locationURL. Ca devrait correspondre à ce que tu cherches.
Ecrire l'équivalent en VBScript ne devrait pas être un gros problème, Shell.Application étant un objet COM et les objets COM étant accessibles en VBScript.
Jacques
Jean
"rikki92" wrote in message news:
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..
En l'occurrence, location* correspond aux deux propriétés locationName et locationURL. Ca devrait correspondre à ce que tu cherches.
Ecrire l'équivalent en VBScript ne devrait pas être un gros problème, Shell.Application étant un objet COM et les objets COM étant accessibles en VBScript.
Jacques
Ca ne donnera que les tites des fenêtres IE (et sous certains Windows les titres de l'Explorateur).
Je ne pense pas que WMI ou autre dispose de méthode pour ça. Un passage au brouteur de com pour s'en assurer.
Il y a l'utilitaire cmdhow http://www.commandline.co.uk/cmdow/index.html qui permet de récupérer les titres des fenêtres.
Sinon développer un ocx ou autre en utilisant la fonction d'api GetWindowText : http://msdn2.microsoft.com/en-us/library/ms633520.aspx
Amicalement,
-- Jean - JMST Belgium
"rikki92" <rikki92@discussions.microsoft.com> wrote in message
news:CBB72AE1-C0D2-4FBD-8A12-28F81C4AF835@microsoft.com...
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..
En l'occurrence, location* correspond aux deux propriétés locationName et
locationURL. Ca devrait correspondre à ce que tu cherches.
Ecrire l'équivalent en VBScript ne devrait pas être un gros problème,
Shell.Application étant un objet COM et les objets COM étant accessibles en
VBScript.
Jacques
Ca ne donnera que les tites des fenêtres IE (et sous certains Windows
les titres de l'Explorateur).
Je ne pense pas que WMI ou autre dispose de méthode pour ça.
Un passage au brouteur de com pour s'en assurer.
Il y a l'utilitaire cmdhow
http://www.commandline.co.uk/cmdow/index.html qui permet de récupérer
les titres des fenêtres.
Sinon développer un ocx ou autre en utilisant la fonction d'api
GetWindowText :
http://msdn2.microsoft.com/en-us/library/ms633520.aspx
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..
En l'occurrence, location* correspond aux deux propriétés locationName et locationURL. Ca devrait correspondre à ce que tu cherches.
Ecrire l'équivalent en VBScript ne devrait pas être un gros problème, Shell.Application étant un objet COM et les objets COM étant accessibles en VBScript.
Jacques
Ca ne donnera que les tites des fenêtres IE (et sous certains Windows les titres de l'Explorateur).
Je ne pense pas que WMI ou autre dispose de méthode pour ça. Un passage au brouteur de com pour s'en assurer.
Il y a l'utilitaire cmdhow http://www.commandline.co.uk/cmdow/index.html qui permet de récupérer les titres des fenêtres.
Sinon développer un ocx ou autre en utilisant la fonction d'api GetWindowText : http://msdn2.microsoft.com/en-us/library/ms633520.aspx
Amicalement,
-- Jean - JMST Belgium
MCI (ex do ré Mi chel la si do) [MVP]
Bonsoir !
Ce genre de chose, c'est typiquement la cible d'Autoit. Voici un petit exemple, qui donne la liste des fenêtres ayant un titre, ainsi que les handles correspondants :
$var = WinList() $result="" For $i = 1 to $var[0][0] If $var[$i][0]<>"" Then $result &= $var[$i][0] & " handle: " & $var[$i][1] & @CRLF EndIf Next MsgBox(0,"Fenêtres",$result)
Pour les titres, attention : il y a souvent des titres affichés différents des titres des fenêtres. Par exemple, avec Internet-Explorer, le titre de la fenêtre est : Windows Internet Explorer (sous Vista) alors que le titre affiché peut-être : http://www.mclaveau.com - Windows Internet Explorer
@-salutations
Michel Claveau
Bonsoir !
Ce genre de chose, c'est typiquement la cible d'Autoit.
Voici un petit exemple, qui donne la liste des fenêtres ayant un titre, ainsi que les handles
correspondants :
$var = WinList()
$result=""
For $i = 1 to $var[0][0]
If $var[$i][0]<>"" Then
$result &= $var[$i][0] & " handle: " & $var[$i][1] & @CRLF
EndIf
Next
MsgBox(0,"Fenêtres",$result)
Pour les titres, attention : il y a souvent des titres affichés différents des titres des fenêtres.
Par exemple, avec Internet-Explorer, le titre de la fenêtre est :
Windows Internet Explorer (sous Vista)
alors que le titre affiché peut-être :
http://www.mclaveau.com - Windows Internet Explorer
Ce genre de chose, c'est typiquement la cible d'Autoit. Voici un petit exemple, qui donne la liste des fenêtres ayant un titre, ainsi que les handles correspondants :
$var = WinList() $result="" For $i = 1 to $var[0][0] If $var[$i][0]<>"" Then $result &= $var[$i][0] & " handle: " & $var[$i][1] & @CRLF EndIf Next MsgBox(0,"Fenêtres",$result)
Pour les titres, attention : il y a souvent des titres affichés différents des titres des fenêtres. Par exemple, avec Internet-Explorer, le titre de la fenêtre est : Windows Internet Explorer (sous Vista) alors que le titre affiché peut-être : http://www.mclaveau.com - Windows Internet Explorer
@-salutations
Michel Claveau
Méta-MCI (MVP)
Re !
Pour compléter, voici un script en Python (qui utilise l'API de windows) :
for w in listwin: if w[1]!='' and w[1]!='Default IME': print w[1],' handle:',w[0]
Ce script affiche, lui aussi, le titre des fenêtres et les handles associés. Vous noterez l'utilisation d'un callback, par l'API Windows (avec la fonction "traitehandle").
@-salutations (bis)
Michel Claveau
Re !
Pour compléter, voici un script en Python (qui utilise l'API de windows) :
for w in listwin:
if w[1]!='' and w[1]!='Default IME':
print w[1],' handle:',w[0]
Ce script affiche, lui aussi, le titre des fenêtres et les handles associés. Vous noterez
l'utilisation d'un callback, par l'API Windows (avec la fonction "traitehandle").
for w in listwin: if w[1]!='' and w[1]!='Default IME': print w[1],' handle:',w[0]
Ce script affiche, lui aussi, le titre des fenêtres et les handles associés. Vous noterez l'utilisation d'un callback, par l'API Windows (avec la fonction "traitehandle").
@-salutations (bis)
Michel Claveau
rikki92
Merci a tous vous m'avez sauvé ^ ^
Pour info, et cela pourrait vous interesser un jour, auparavant j'utilisais un utlitaire de capture OCR en ligne de commande qui se nomme textract. Vous definissez une zone sur l'ecran , et il vous donne le resulat en fichier txt comme si vous utilisiez un scanner classique. Il en marche qu'avec des polices classiques de reference de MS et dans de petites tailles. Bien pratique pour lire des applis faites en Java et teste par exemple leur presence ou recuperer leur contenu.. http://www.structurise.com/textract/
Merci encore a vous.. Eric
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 :-)
Merci a tous vous m'avez sauvé ^ ^
Pour info, et cela pourrait vous interesser un jour, auparavant j'utilisais
un utlitaire de capture OCR en ligne de commande qui se nomme textract.
Vous definissez une zone sur l'ecran , et il vous donne le resulat en
fichier txt comme si vous utilisiez un scanner classique.
Il en marche qu'avec des polices classiques de reference de MS et dans de
petites tailles.
Bien pratique pour lire des applis faites en Java et teste par exemple leur
presence ou recuperer leur contenu..
http://www.structurise.com/textract/
Merci encore a vous..
Eric
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..
Pour info, et cela pourrait vous interesser un jour, auparavant j'utilisais un utlitaire de capture OCR en ligne de commande qui se nomme textract. Vous definissez une zone sur l'ecran , et il vous donne le resulat en fichier txt comme si vous utilisiez un scanner classique. Il en marche qu'avec des polices classiques de reference de MS et dans de petites tailles. Bien pratique pour lire des applis faites en Java et teste par exemple leur presence ou recuperer leur contenu.. http://www.structurise.com/textract/
Merci encore a vous.. Eric
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 :-)
moi
Notre ami MCI (ex do ré Mi chel la si do) [MVP] tapota :
Bonsoir !
Ce genre de chose, c'est typiquement la cible d'Autoit. Voici un petit exemple, qui donne la liste des fenêtres ayant un titre, ainsi que les handles correspondants :
$var = WinList() $result="" For $i = 1 to $var[0][0] If $var[$i][0]<>"" Then $result &= $var[$i][0] & " handle: " & $var[$i][1] & @CRLF EndIf Next MsgBox(0,"Fenêtres",$result)
bonjour,
Je me demande bien pourquoi WinList() n'existe pas avec l'objet COM de AutoIt3 Set oAutoIt = WScript.CreateObject("AutoItX3.Control") ( du moins il n'est pas dans la doc ...)
HB
Notre ami MCI (ex do ré Mi chel la si do) [MVP] tapota :
Bonsoir !
Ce genre de chose, c'est typiquement la cible d'Autoit.
Voici un petit exemple, qui donne la liste des fenêtres ayant un
titre, ainsi que les handles correspondants :
$var = WinList()
$result=""
For $i = 1 to $var[0][0]
If $var[$i][0]<>"" Then
$result &= $var[$i][0] & " handle: " & $var[$i][1]
& @CRLF EndIf
Next
MsgBox(0,"Fenêtres",$result)
bonjour,
Je me demande bien pourquoi WinList()
n'existe pas avec l'objet COM de AutoIt3
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
( du moins il n'est pas dans la doc ...)
Notre ami MCI (ex do ré Mi chel la si do) [MVP] tapota :
Bonsoir !
Ce genre de chose, c'est typiquement la cible d'Autoit. Voici un petit exemple, qui donne la liste des fenêtres ayant un titre, ainsi que les handles correspondants :
$var = WinList() $result="" For $i = 1 to $var[0][0] If $var[$i][0]<>"" Then $result &= $var[$i][0] & " handle: " & $var[$i][1] & @CRLF EndIf Next MsgBox(0,"Fenêtres",$result)
bonjour,
Je me demande bien pourquoi WinList() n'existe pas avec l'objet COM de AutoIt3 Set oAutoIt = WScript.CreateObject("AutoItX3.Control") ( du moins il n'est pas dans la doc ...)
HB
Jacques Barathon [MS]
"Jean" wrote in message news: ...
Ca ne donnera que les tites des fenêtres IE (et sous certains Windows les titres de l'Explorateur).
En effet, mais vu le postulat de départ où Rikki92 parlait de fenêtres Java, j'ai pensé que ça pouvait convenir. Sinon, on peut écrire ceci:
PS> get-process | where {$_.MainWindowTitle} | format-table MainWindowTitle, Name, Id -a
Jacques
"Jean" <jean.jmst@gmail.com> wrote in message
news:mn.5d737d7a696643a8.75931@windows...
...
Ca ne donnera que les tites des fenêtres IE (et sous certains Windows les
titres de l'Explorateur).
En effet, mais vu le postulat de départ où Rikki92 parlait de fenêtres Java,
j'ai pensé que ça pouvait convenir. Sinon, on peut écrire ceci:
PS> get-process | where {$_.MainWindowTitle} | format-table MainWindowTitle,
Name, Id -a
' énumération des fenêtres visibles (WS_VISIBLE style) do ' tant qu'il y a des fenêtres à énumérer hWnd=oDyn.GetWindow(hWnd,2) ' GW_HWNDNEXT(2) If hWnd<>0 And oDyn.IsWindowVisible(hWnd) Then nLen=oDyn.GetWindowText(hWnd,LPSTR(strTitleBuf),Len(strTitleBuf)) If nLen>0 Then ' affichage du titre s'il y en a un ! strTitle=String(nLen+1,VBNullChar) ' allocation mémoire (heap) ' conversion de la chaine Multibyte en Unicode ' la fonction LPSTR permet d'obtenir l'adresse de la chaine oDyn.MultiByteToWideChar _ CP_ACP,0,LPSTR(strTitleBuf),-1,LPSTR(strTitle),Len(strTitle) WScript.Echo strTitle ' affichage du titre de la fenêtre End If End If Loop Until hWnd=0 ' le handle de fenêtre est nul en fin de parcours
Function LPSTR(str) ' déterminer l'adresse mémoire de l'argument lpSrc=oDyn.lstrcat(str,"") ' LPSTR source lpDest=oDyn.lstrcat(LPSTR,"") ' LPSTR destination LPSTR=CLng(0) ' allocation mémoire pour l'adresse (4 Bytes) oDyn.RtlMovememory lpDest+8, lpSrc+8, 4 ' VB Variant (+8) = PTR End Function
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"rikki92" <rikki92@discussions.microsoft.com> a écrit dans le message de
news:CBB72AE1-C0D2-4FBD-8A12-28F81C4AF835@microsoft.com
| Hello, Bonjour,
Hi, Bonjour,
| Je cherche a recuperer par script le titre des fenetres en cours.
J'arrive un peu tard mais tant pis !
Pour dire vrai, j'ai trop ramé donc je Post :-)
Ci-dessous une solution en VBScript (via le wrapper DynaCall)
http://ourworld.compuserve.com/homepages/Guenter_Born/WSHBazaar/WSHDynaCall.htm
--- Coupez ici : CodeSnippet.vbs ---
' initialisation du composant DynaCall
' et déclaration des API Win32 utilisées (prototypes)
Set oDyn=CreateObject("DynamicWrapper") ' > regsvr32 dynwrap.dll
oDyn.Register "User32.dll","GetTopWindow","f=s","r=h","i=h"
oDyn.Register "User32.dll","GetWindow","f=s","r=h","i=hu"
oDyn.Register "User32.dll","GetWindowText","f=s","r=l","i=hll"
oDyn.Register "User32.dll","IsWindowVisible","f=s","r=t","i=h"
oDyn.Register "kernel32.dll","lstrcat","f=s","r=l","i=ws"
oDyn.Register "kernel32.dll","RtlMoveMemory","f=s","r=l","i=lll"
oDyn.Register
"kernel32.dll","MultiByteToWideChar","f=s","r=l","i=llllll"
' énumération des fenêtres visibles (WS_VISIBLE style)
do ' tant qu'il y a des fenêtres à énumérer
hWnd=oDyn.GetWindow(hWnd,2) ' GW_HWNDNEXT(2)
If hWnd<>0 And oDyn.IsWindowVisible(hWnd) Then
nLen=oDyn.GetWindowText(hWnd,LPSTR(strTitleBuf),Len(strTitleBuf))
If nLen>0 Then ' affichage du titre s'il y en a un !
strTitle=String(nLen+1,VBNullChar) ' allocation mémoire (heap)
' conversion de la chaine Multibyte en Unicode
' la fonction LPSTR permet d'obtenir l'adresse de la chaine
oDyn.MultiByteToWideChar _
CP_ACP,0,LPSTR(strTitleBuf),-1,LPSTR(strTitle),Len(strTitle)
WScript.Echo strTitle ' affichage du titre de la fenêtre
End If
End If
Loop Until hWnd=0 ' le handle de fenêtre est nul en fin de parcours
Function LPSTR(str) ' déterminer l'adresse mémoire de l'argument
lpSrc=oDyn.lstrcat(str,"") ' LPSTR source
lpDest=oDyn.lstrcat(LPSTR,"") ' LPSTR destination
LPSTR=CLng(0) ' allocation mémoire pour l'adresse (4 Bytes)
oDyn.RtlMovememory lpDest+8, lpSrc+8, 4 ' VB Variant (+8) = PTR
End Function
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
' énumération des fenêtres visibles (WS_VISIBLE style) do ' tant qu'il y a des fenêtres à énumérer hWnd=oDyn.GetWindow(hWnd,2) ' GW_HWNDNEXT(2) If hWnd<>0 And oDyn.IsWindowVisible(hWnd) Then nLen=oDyn.GetWindowText(hWnd,LPSTR(strTitleBuf),Len(strTitleBuf)) If nLen>0 Then ' affichage du titre s'il y en a un ! strTitle=String(nLen+1,VBNullChar) ' allocation mémoire (heap) ' conversion de la chaine Multibyte en Unicode ' la fonction LPSTR permet d'obtenir l'adresse de la chaine oDyn.MultiByteToWideChar _ CP_ACP,0,LPSTR(strTitleBuf),-1,LPSTR(strTitle),Len(strTitle) WScript.Echo strTitle ' affichage du titre de la fenêtre End If End If Loop Until hWnd=0 ' le handle de fenêtre est nul en fin de parcours
Function LPSTR(str) ' déterminer l'adresse mémoire de l'argument lpSrc=oDyn.lstrcat(str,"") ' LPSTR source lpDest=oDyn.lstrcat(LPSTR,"") ' LPSTR destination LPSTR=CLng(0) ' allocation mémoire pour l'adresse (4 Bytes) oDyn.RtlMovememory lpDest+8, lpSrc+8, 4 ' VB Variant (+8) = PTR End Function
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
Méta-MCI (MVP)
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 ?
@+
Michel Claveau
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 ?
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 ?