Avec PowerShell, si on veut utiliser Internet-Explorer par COM, on peut
utiliser :
$ie=(New-Object -com 'InternetExplorer.Application')
Ce que je voudrais, c'est connecter à une instance Internet-Explorer
déjà ouverte.
Avec Python, il suffit de faire
win32com.client.Dispatch('{9BA05972-F6A8-11CF-A442-00A0C90A8F39}')
pour récupérer une liste des handles COM des instances ouvertes.
"Michel Claveau" <Enleverles wrote in message news:
Bonsoir !
Avec PowerShell, si on veut utiliser Internet-Explorer par COM, on peut utiliser : $ie=(New-Object -com 'InternetExplorer.Application')
Ce que je voudrais, c'est connecter à une instance Internet-Explorer déjà ouverte.
Avec Python, il suffit de faire win32com.client.Dispatch('{9BA05972-F6A8-11CF-A442-00A0C90A8F39}') pour récupérer une liste des handles COM des instances ouvertes.
Comment faire la même chose en PowerShell ?
La méthode que je connais, pour une raison que je n'explique pas, ne marche pas pour IE:
Cette technique permet de récupérer toutes les instances de Word dans la variable $word. Ca marche également avec Outlook et Excel, et à priori avec toute application qui a un ProgId. Mais si j'essaie avec "internetexplorer.application" ça me donne l'erreur méchante suivante:
PS> $ie=[System.Runtime.InteropServices.Marshal]::GetActiveObject("internetexplorer.application") Exception calling "GetActiveObject" with "1" argument(s): "Operation unavailable (Exception from HRESULT: 0x800401E3 (M K_E_UNAVAILABLE))" At line:1 char:62 + $ie=[System.Runtime.InteropServices.Marshal]::GetActiveObject( <<<< "internetexplorer.application")
Pourtant, je suis sûr d'avoir vu ça marcher avec IE au moins une fois il y a longtemps. Je vais essayer de retrouver la façon de faire exacte.
Jacques
"Michel Claveau" <Enleverles XX.mcXX@XmXclaveauXX.XX.com> wrote in message
news:mn.9d1b7d746665c0a0.34209@XmXclaveauXX.XX.com...
Bonsoir !
Avec PowerShell, si on veut utiliser Internet-Explorer par COM, on peut
utiliser :
$ie=(New-Object -com 'InternetExplorer.Application')
Ce que je voudrais, c'est connecter à une instance Internet-Explorer déjà
ouverte.
Avec Python, il suffit de faire
win32com.client.Dispatch('{9BA05972-F6A8-11CF-A442-00A0C90A8F39}')
pour récupérer une liste des handles COM des instances ouvertes.
Comment faire la même chose en PowerShell ?
La méthode que je connais, pour une raison que je n'explique pas, ne marche
pas pour IE:
Cette technique permet de récupérer toutes les instances de Word dans la
variable $word. Ca marche également avec Outlook et Excel, et à priori avec
toute application qui a un ProgId. Mais si j'essaie avec
"internetexplorer.application" ça me donne l'erreur méchante suivante:
PS>
$ie=[System.Runtime.InteropServices.Marshal]::GetActiveObject("internetexplorer.application")
Exception calling "GetActiveObject" with "1" argument(s): "Operation
unavailable (Exception from HRESULT: 0x800401E3 (M
K_E_UNAVAILABLE))"
At line:1 char:62
+ $ie=[System.Runtime.InteropServices.Marshal]::GetActiveObject( <<<<
"internetexplorer.application")
Pourtant, je suis sûr d'avoir vu ça marcher avec IE au moins une fois il y a
longtemps. Je vais essayer de retrouver la façon de faire exacte.
"Michel Claveau" <Enleverles wrote in message news:
Bonsoir !
Avec PowerShell, si on veut utiliser Internet-Explorer par COM, on peut utiliser : $ie=(New-Object -com 'InternetExplorer.Application')
Ce que je voudrais, c'est connecter à une instance Internet-Explorer déjà ouverte.
Avec Python, il suffit de faire win32com.client.Dispatch('{9BA05972-F6A8-11CF-A442-00A0C90A8F39}') pour récupérer une liste des handles COM des instances ouvertes.
Comment faire la même chose en PowerShell ?
La méthode que je connais, pour une raison que je n'explique pas, ne marche pas pour IE:
Cette technique permet de récupérer toutes les instances de Word dans la variable $word. Ca marche également avec Outlook et Excel, et à priori avec toute application qui a un ProgId. Mais si j'essaie avec "internetexplorer.application" ça me donne l'erreur méchante suivante:
PS> $ie=[System.Runtime.InteropServices.Marshal]::GetActiveObject("internetexplorer.application") Exception calling "GetActiveObject" with "1" argument(s): "Operation unavailable (Exception from HRESULT: 0x800401E3 (M K_E_UNAVAILABLE))" At line:1 char:62 + $ie=[System.Runtime.InteropServices.Marshal]::GetActiveObject( <<<< "internetexplorer.application")
Pourtant, je suis sûr d'avoir vu ça marcher avec IE au moins une fois il y a longtemps. Je vais essayer de retrouver la façon de faire exacte.
Jacques
Michel Claveau
Salut !
J'ai essayé tes exemples de codes, et obtient les mêmes résultats que toi.
-- @-salutations
Michel Claveau
Salut !
J'ai essayé tes exemples de codes, et obtient les mêmes résultats que
toi.
J'ai essayé tes exemples de codes, et obtient les mêmes résultats que toi.
-- @-salutations
Michel Claveau
Gilles LAURENT
"Michel Claveau" <Enleverles a écrit dans le message de news: | Salut !
Bonsoir,
| J'ai essayé tes exemples de codes, et obtient les mêmes résultats que | toi.
GetObject (VBScript) ou GetActiveObject (.Net) s'appuient sur la ROT (Running Object Table) pour rechercher les serveurs COM en cours d'exécution et retourner les références des instances. Généralement, un serveur COM enregistre ses instances de manière dynamique dans la ROT (Excel, Word, ...). Ceci n'est pas le cas de Internet Explorer :-( Donc que ce soit en VBScript ou en PowerShell (.Net), il n'est pas possible de se connecter à une instance Internet Explorer par ces méthodes. Ci-dessous, un transcript WSH issu de mes tests :
******************************* WSH Transcript Start Start time : 2007-04-22 20:47:15 Username : xxxAdministrateur Machine : xxx (Microsoft Windows NT 5.1.2600.1) ******************************* Transcript started, output file is D:TranscriptGetIEObject.txt
WSH D:test> ' connexion à une instance Excel en cours d'exécution WSH D:test> set oExcel=GetObject(,"Excel.Application") WSH D:test> ' ok WSH D:test> ' connexion à une instance Word en cours d'exécution WSH D:test> set oWord=GetObject(,"Word.Application") WSH D:test> ' ok WSH D:test> ' connexion à une instance Internet Explorer en cours WSH D:test> set oIE=GetObject(,"InternetExplorer.Application") :: An error occured (429) :: Un composant ActiveX ne peut pas créer un objet.
"Michel Claveau" <Enleverles XX.mcXX@XmXclaveauXX.XX.com> a écrit dans
le message de news:mn.ac4b7d7480880148.34209@XmXclaveauXX.XX.com
| Salut !
Bonsoir,
| J'ai essayé tes exemples de codes, et obtient les mêmes résultats que
| toi.
GetObject (VBScript) ou GetActiveObject (.Net) s'appuient sur la ROT
(Running Object Table) pour rechercher les serveurs COM en cours
d'exécution et retourner les références des instances. Généralement, un
serveur COM enregistre ses instances de manière dynamique dans la ROT
(Excel, Word, ...). Ceci n'est pas le cas de Internet Explorer :-( Donc
que ce soit en VBScript ou en PowerShell (.Net), il n'est pas possible
de se connecter à une instance Internet Explorer par ces méthodes.
Ci-dessous, un transcript WSH issu de mes tests :
*******************************
WSH Transcript Start
Start time : 2007-04-22 20:47:15
Username : xxxAdministrateur
Machine : xxx (Microsoft Windows NT 5.1.2600.1)
*******************************
Transcript started, output file is D:TranscriptGetIEObject.txt
WSH D:test> ' connexion à une instance Excel en cours d'exécution
WSH D:test> set oExcel=GetObject(,"Excel.Application")
WSH D:test> ' ok
WSH D:test> ' connexion à une instance Word en cours d'exécution
WSH D:test> set oWord=GetObject(,"Word.Application")
WSH D:test> ' ok
WSH D:test> ' connexion à une instance Internet Explorer en cours
WSH D:test> set oIE=GetObject(,"InternetExplorer.Application")
:: An error occured (429)
:: Un composant ActiveX ne peut pas créer un objet.
"Michel Claveau" <Enleverles a écrit dans le message de news: | Salut !
Bonsoir,
| J'ai essayé tes exemples de codes, et obtient les mêmes résultats que | toi.
GetObject (VBScript) ou GetActiveObject (.Net) s'appuient sur la ROT (Running Object Table) pour rechercher les serveurs COM en cours d'exécution et retourner les références des instances. Généralement, un serveur COM enregistre ses instances de manière dynamique dans la ROT (Excel, Word, ...). Ceci n'est pas le cas de Internet Explorer :-( Donc que ce soit en VBScript ou en PowerShell (.Net), il n'est pas possible de se connecter à une instance Internet Explorer par ces méthodes. Ci-dessous, un transcript WSH issu de mes tests :
******************************* WSH Transcript Start Start time : 2007-04-22 20:47:15 Username : xxxAdministrateur Machine : xxx (Microsoft Windows NT 5.1.2600.1) ******************************* Transcript started, output file is D:TranscriptGetIEObject.txt
WSH D:test> ' connexion à une instance Excel en cours d'exécution WSH D:test> set oExcel=GetObject(,"Excel.Application") WSH D:test> ' ok WSH D:test> ' connexion à une instance Word en cours d'exécution WSH D:test> set oWord=GetObject(,"Word.Application") WSH D:test> ' ok WSH D:test> ' connexion à une instance Internet Explorer en cours WSH D:test> set oIE=GetObject(,"InternetExplorer.Application") :: An error occured (429) :: Un composant ActiveX ne peut pas créer un objet.
"Michel Claveau" <Enleverles a écrit dans le message de news: | Salut !
Bonsoir,
| J'ai essayé tes exemples de codes, et obtient les mêmes résultats que | toi.
GetObject (VBScript) ou GetActiveObject (.Net) s'appuient sur la ROT (Running Object Table) pour rechercher les serveurs COM en cours d'exécution et retourner les références des instances. Généralement, un serveur COM enregistre ses instances de manière dynamique dans la ROT (Excel, Word, ...). Ceci n'est pas le cas de Internet Explorer :-( Donc que ce soit en VBScript ou en PowerShell (.Net), il n'est pas possible de se connecter à une instance Internet Explorer par ces méthodes. Ci-dessous, un transcript WSH issu de mes tests :
Merci Gilles pour la confirmation. Il me semble me souvenir d'une technique en PowerShell (sans doute utilisable également en VBScript) qui utilise l'inventaire des fenêtres Explorer ou quelque chose comme ça. Il faudra que je retrouve ça dans mes archives, mais je n'ai pas encore eu le temps de m'y mettre sérieusement.
Jacques
"Gilles LAURENT" <glsft@free.fr> wrote in message
news:e4qUdARhHHA.4516@TK2MSFTNGP03.phx.gbl...
"Michel Claveau" <Enleverles XX.mcXX@XmXclaveauXX.XX.com> a écrit dans
le message de news:mn.ac4b7d7480880148.34209@XmXclaveauXX.XX.com
| Salut !
Bonsoir,
| J'ai essayé tes exemples de codes, et obtient les mêmes résultats que
| toi.
GetObject (VBScript) ou GetActiveObject (.Net) s'appuient sur la ROT
(Running Object Table) pour rechercher les serveurs COM en cours
d'exécution et retourner les références des instances. Généralement, un
serveur COM enregistre ses instances de manière dynamique dans la ROT
(Excel, Word, ...). Ceci n'est pas le cas de Internet Explorer :-( Donc
que ce soit en VBScript ou en PowerShell (.Net), il n'est pas possible
de se connecter à une instance Internet Explorer par ces méthodes.
Ci-dessous, un transcript WSH issu de mes tests :
Merci Gilles pour la confirmation. Il me semble me souvenir d'une technique
en PowerShell (sans doute utilisable également en VBScript) qui utilise
l'inventaire des fenêtres Explorer ou quelque chose comme ça. Il faudra que
je retrouve ça dans mes archives, mais je n'ai pas encore eu le temps de m'y
mettre sérieusement.
"Michel Claveau" <Enleverles a écrit dans le message de news: | Salut !
Bonsoir,
| J'ai essayé tes exemples de codes, et obtient les mêmes résultats que | toi.
GetObject (VBScript) ou GetActiveObject (.Net) s'appuient sur la ROT (Running Object Table) pour rechercher les serveurs COM en cours d'exécution et retourner les références des instances. Généralement, un serveur COM enregistre ses instances de manière dynamique dans la ROT (Excel, Word, ...). Ceci n'est pas le cas de Internet Explorer :-( Donc que ce soit en VBScript ou en PowerShell (.Net), il n'est pas possible de se connecter à une instance Internet Explorer par ces méthodes. Ci-dessous, un transcript WSH issu de mes tests :
Merci Gilles pour la confirmation. Il me semble me souvenir d'une technique en PowerShell (sans doute utilisable également en VBScript) qui utilise l'inventaire des fenêtres Explorer ou quelque chose comme ça. Il faudra que je retrouve ça dans mes archives, mais je n'ai pas encore eu le temps de m'y mettre sérieusement.
Jacques
Gilles LAURENT
"Jacques Barathon [MS]" a écrit dans le message de news:Oxg% | "Gilles LAURENT" wrote in message | news: || "Michel Claveau" <Enleverles a écrit || dans le message de news: ||| Salut ! || || Bonsoir, || ||| J'ai essayé tes exemples de codes, et obtient les mêmes résultats ||| que toi. || || GetObject (VBScript) ou GetActiveObject (.Net) s'appuient sur la ROT || (Running Object Table) pour rechercher les serveurs COM en cours || d'exécution et retourner les références des instances. Généralement, || un serveur COM enregistre ses instances de manière dynamique dans la || ROT (Excel, Word, ...). Ceci n'est pas le cas de Internet Explorer || :-( Donc que ce soit en VBScript ou en PowerShell (.Net), il n'est || pas possible de se connecter à une instance Internet Explorer par || ces méthodes. Ci-dessous, un transcript WSH issu de mes tests : | | Merci Gilles pour la confirmation. Il me semble me souvenir d'une | technique en PowerShell (sans doute utilisable également en VBScript) | qui utilise l'inventaire des fenêtres Explorer ou quelque chose comme | ça. Il faudra que je retrouve ça dans mes archives, mais je n'ai pas | encore eu le temps de m'y mettre sérieusement. | | Jacques
Tout à fait. Il est possible de récupérer les instances Internet Explorer via la collection Windows de l'objet "Shell.Application". Ci-dessous un transcript WSH :
******************************* WSH Transcript Start Start time : 2007-04-23 08:21:41 Username : xxxAdministrateur Machine : xxx (Microsoft Windows NT 5.1.2600.1) ******************************* Transcript started, output file is D:TranscriptIEInst.txt
WSH D:test> set oShApp=co("Shell.Application") WSH D:test> ' affichage du nombre de fenêtre WSH D:test> echo oShApp.Windows.Count 7 WSH D:test> ' énumération des instances Internet Explorer WSH D:test> % oIE in oShApp.Windows {
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> a écrit dans le
message de news:Oxg%238GShHHA.1244@TK2MSFTNGP04.phx.gbl
| "Gilles LAURENT" <glsft@free.fr> wrote in message
| news:e4qUdARhHHA.4516@TK2MSFTNGP03.phx.gbl...
|| "Michel Claveau" <Enleverles XX.mcXX@XmXclaveauXX.XX.com> a écrit
|| dans le message de news:mn.ac4b7d7480880148.34209@XmXclaveauXX.XX.com
||| Salut !
||
|| Bonsoir,
||
||| J'ai essayé tes exemples de codes, et obtient les mêmes résultats
||| que toi.
||
|| GetObject (VBScript) ou GetActiveObject (.Net) s'appuient sur la ROT
|| (Running Object Table) pour rechercher les serveurs COM en cours
|| d'exécution et retourner les références des instances. Généralement,
|| un serveur COM enregistre ses instances de manière dynamique dans la
|| ROT (Excel, Word, ...). Ceci n'est pas le cas de Internet Explorer
|| :-( Donc que ce soit en VBScript ou en PowerShell (.Net), il n'est
|| pas possible de se connecter à une instance Internet Explorer par
|| ces méthodes. Ci-dessous, un transcript WSH issu de mes tests :
|
| Merci Gilles pour la confirmation. Il me semble me souvenir d'une
| technique en PowerShell (sans doute utilisable également en VBScript)
| qui utilise l'inventaire des fenêtres Explorer ou quelque chose comme
| ça. Il faudra que je retrouve ça dans mes archives, mais je n'ai pas
| encore eu le temps de m'y mettre sérieusement.
|
| Jacques
Tout à fait. Il est possible de récupérer les instances Internet
Explorer via la collection Windows de l'objet "Shell.Application".
Ci-dessous un transcript WSH :
*******************************
WSH Transcript Start
Start time : 2007-04-23 08:21:41
Username : xxxAdministrateur
Machine : xxx (Microsoft Windows NT 5.1.2600.1)
*******************************
Transcript started, output file is D:TranscriptIEInst.txt
WSH D:test> set oShApp=co("Shell.Application")
WSH D:test> ' affichage du nombre de fenêtre
WSH D:test> echo oShApp.Windows.Count
7
WSH D:test> ' énumération des instances Internet Explorer
WSH D:test> % oIE in oShApp.Windows {
http://imp.free.fr/
http://www.jeuxvideo.com/articles/listes/tests-ds-noms.htm
file:///D:/Users/Dev/Copyright/WSH/Release/Transcript
http://www.valdoisetrophy.org/
http://www.google.fr/
http://support.microsoft.com/
WSH D:test> ' il est possible de se connecter à une instance
WSH D:test> set oIE=oShApp.Windows.Item(0)
WSH D:test> ' modification d'un attribut
WSH D:test> oIE.Visibleúlse
WSH D:test>
"Jacques Barathon [MS]" a écrit dans le message de news:Oxg% | "Gilles LAURENT" wrote in message | news: || "Michel Claveau" <Enleverles a écrit || dans le message de news: ||| Salut ! || || Bonsoir, || ||| J'ai essayé tes exemples de codes, et obtient les mêmes résultats ||| que toi. || || GetObject (VBScript) ou GetActiveObject (.Net) s'appuient sur la ROT || (Running Object Table) pour rechercher les serveurs COM en cours || d'exécution et retourner les références des instances. Généralement, || un serveur COM enregistre ses instances de manière dynamique dans la || ROT (Excel, Word, ...). Ceci n'est pas le cas de Internet Explorer || :-( Donc que ce soit en VBScript ou en PowerShell (.Net), il n'est || pas possible de se connecter à une instance Internet Explorer par || ces méthodes. Ci-dessous, un transcript WSH issu de mes tests : | | Merci Gilles pour la confirmation. Il me semble me souvenir d'une | technique en PowerShell (sans doute utilisable également en VBScript) | qui utilise l'inventaire des fenêtres Explorer ou quelque chose comme | ça. Il faudra que je retrouve ça dans mes archives, mais je n'ai pas | encore eu le temps de m'y mettre sérieusement. | | Jacques
Tout à fait. Il est possible de récupérer les instances Internet Explorer via la collection Windows de l'objet "Shell.Application". Ci-dessous un transcript WSH :
******************************* WSH Transcript Start Start time : 2007-04-23 08:21:41 Username : xxxAdministrateur Machine : xxx (Microsoft Windows NT 5.1.2600.1) ******************************* Transcript started, output file is D:TranscriptIEInst.txt
WSH D:test> set oShApp=co("Shell.Application") WSH D:test> ' affichage du nombre de fenêtre WSH D:test> echo oShApp.Windows.Count 7 WSH D:test> ' énumération des instances Internet Explorer WSH D:test> % oIE in oShApp.Windows {
Mais, n'y aurait-il pas un autre moyen de se connecter à une instance que par la table ROT ?
Par exemple, en énumérant les CLSID actif, ou les Process-actifs ?
Sinon, j'ai vu le descriptif d'une méthode consistant à forcer l'inscription de IE dans la ROT (en convertissant le CLSID en type com). Malheureusement, tout était en C#
-- @-salutations
Michel Claveau
Bonjour !
Mais, n'y aurait-il pas un autre moyen de se connecter à une instance
que par la table ROT ?
Par exemple, en énumérant les CLSID actif, ou les Process-actifs ?
Sinon, j'ai vu le descriptif d'une méthode consistant à forcer
l'inscription de IE dans la ROT (en convertissant le CLSID en type
com). Malheureusement, tout était en C#
Mais, n'y aurait-il pas un autre moyen de se connecter à une instance que par la table ROT ?
Par exemple, en énumérant les CLSID actif, ou les Process-actifs ?
Sinon, j'ai vu le descriptif d'une méthode consistant à forcer l'inscription de IE dans la ROT (en convertissant le CLSID en type com). Malheureusement, tout était en C#
-- @-salutations
Michel Claveau
Gilles LAURENT
"Michel Claveau" <Enleverles a écrit dans le message de news: | Bonjour !
Bonjour,
| Mais, n'y aurait-il pas un autre moyen de se connecter à une instance | que par la table ROT ?
Je ne connais que deux méthodes : - GetObject / GetActiveObject qui utilisent la ROT - La collection Windows de l'objet Shell.Application
| Par exemple, en énumérant les CLSID actif, ou les Process-actifs ?
Cela permettra effectivement de détecter la présence d'une instance. En revanche, il n'y aura aucun moyen de récupérer un pointeur sur l'objet COM correspondant.
| Sinon, j'ai vu le descriptif d'une méthode consistant à forcer | l'inscription de IE dans la ROT (en convertissant le CLSID en type | com). Malheureusement, tout était en C#
Concernant Internet Explorer, une solution élégante serait d'écrire un plugin COM de type "Browser Helper Object" qui prendrait en charge l'inscription des instances IE dans la ROT via les API CreateItemMoniker et/ou RegisterActiveObject. Un exemple de plugin BHO est disponible sur le site du support Microsoft : http://support.microsoft.com/kb/179230/en-us
"Michel Claveau" <Enleverles XX.mcXX@XmXclaveauXX.XX.com> a écrit dans
le message de news:mn.ba7c7d748fb0ce4c.34209@XmXclaveauXX.XX.com
| Bonjour !
Bonjour,
| Mais, n'y aurait-il pas un autre moyen de se connecter à une instance
| que par la table ROT ?
Je ne connais que deux méthodes :
- GetObject / GetActiveObject qui utilisent la ROT
- La collection Windows de l'objet Shell.Application
| Par exemple, en énumérant les CLSID actif, ou les Process-actifs ?
Cela permettra effectivement de détecter la présence d'une instance. En
revanche, il n'y aura aucun moyen de récupérer un pointeur sur l'objet
COM correspondant.
| Sinon, j'ai vu le descriptif d'une méthode consistant à forcer
| l'inscription de IE dans la ROT (en convertissant le CLSID en type
| com). Malheureusement, tout était en C#
Concernant Internet Explorer, une solution élégante serait d'écrire un
plugin COM de type "Browser Helper Object" qui prendrait en charge
l'inscription des instances IE dans la ROT via les API CreateItemMoniker
et/ou RegisterActiveObject. Un exemple de plugin BHO est disponible sur
le site du support Microsoft :
http://support.microsoft.com/kb/179230/en-us
"Michel Claveau" <Enleverles a écrit dans le message de news: | Bonjour !
Bonjour,
| Mais, n'y aurait-il pas un autre moyen de se connecter à une instance | que par la table ROT ?
Je ne connais que deux méthodes : - GetObject / GetActiveObject qui utilisent la ROT - La collection Windows de l'objet Shell.Application
| Par exemple, en énumérant les CLSID actif, ou les Process-actifs ?
Cela permettra effectivement de détecter la présence d'une instance. En revanche, il n'y aura aucun moyen de récupérer un pointeur sur l'objet COM correspondant.
| Sinon, j'ai vu le descriptif d'une méthode consistant à forcer | l'inscription de IE dans la ROT (en convertissant le CLSID en type | com). Malheureusement, tout était en C#
Concernant Internet Explorer, une solution élégante serait d'écrire un plugin COM de type "Browser Helper Object" qui prendrait en charge l'inscription des instances IE dans la ROT via les API CreateItemMoniker et/ou RegisterActiveObject. Un exemple de plugin BHO est disponible sur le site du support Microsoft : http://support.microsoft.com/kb/179230/en-us
l'inventaire des fenêtres Explorer ou quelque chose comme ça
Outre (Shell.Application).Windows, comme on recherche généralement des fenêtres que l'on a instanciées "soi même" on pourrait aussi imaginer utiliser des fenêtres IE nommées récupérables via la méthode Open du DOM :
'---8<---Fenetre_IE_Nommee.VBS---Jean-JMST-Belgium--- 'Creation d'une fenêtre IE nommée "BOND" '(pourrait être créée dans un autre script) Set IE=CreateObject("InternetExplorer.Application") With IE .Navigate("about:blank") While .Busy:WScript.Sleep 10:Wend With .Document .ParentWindow.Name="BOND" .Body.InnerText="My name is Bond, James Bond" End With .Visible=True End With
'Récupération de la fenêtre nommée "BOND" à l'aide de 'la méthode Open du DOM With CreateObject("InternetExplorer.Application") .Navigate("about:blank") While .Busy:WScript.Sleep 10:Wend Set JBOND=.Document.ParentWindow.Open("","BOND") WScript.Echo JBOND.Document.Body.InnerText .Quit End With
... malheureusement, en PowerShell, l'objet document.parentWindow n'est pas récupéré.
Amicalement,
-- Jean - JMST Belgium
l'inventaire des fenêtres Explorer ou quelque chose comme ça
Outre (Shell.Application).Windows, comme on recherche généralement des
fenêtres que l'on a instanciées "soi même" on pourrait aussi imaginer
utiliser des fenêtres IE nommées récupérables via la méthode Open du
DOM :
'---8<---Fenetre_IE_Nommee.VBS---Jean-JMST-Belgium---
'Creation d'une fenêtre IE nommée "BOND"
'(pourrait être créée dans un autre script)
Set IE=CreateObject("InternetExplorer.Application")
With IE
.Navigate("about:blank")
While .Busy:WScript.Sleep 10:Wend
With .Document
.ParentWindow.Name="BOND"
.Body.InnerText="My name is Bond, James Bond"
End With
.Visible=True
End With
'Récupération de la fenêtre nommée "BOND" à l'aide de
'la méthode Open du DOM
With CreateObject("InternetExplorer.Application")
.Navigate("about:blank")
While .Busy:WScript.Sleep 10:Wend
Set JBOND=.Document.ParentWindow.Open("","BOND")
WScript.Echo JBOND.Document.Body.InnerText
.Quit
End With
l'inventaire des fenêtres Explorer ou quelque chose comme ça
Outre (Shell.Application).Windows, comme on recherche généralement des fenêtres que l'on a instanciées "soi même" on pourrait aussi imaginer utiliser des fenêtres IE nommées récupérables via la méthode Open du DOM :
'---8<---Fenetre_IE_Nommee.VBS---Jean-JMST-Belgium--- 'Creation d'une fenêtre IE nommée "BOND" '(pourrait être créée dans un autre script) Set IE=CreateObject("InternetExplorer.Application") With IE .Navigate("about:blank") While .Busy:WScript.Sleep 10:Wend With .Document .ParentWindow.Name="BOND" .Body.InnerText="My name is Bond, James Bond" End With .Visible=True End With
'Récupération de la fenêtre nommée "BOND" à l'aide de 'la méthode Open du DOM With CreateObject("InternetExplorer.Application") .Navigate("about:blank") While .Busy:WScript.Sleep 10:Wend Set JBOND=.Document.ParentWindow.Open("","BOND") WScript.Echo JBOND.Document.Body.InnerText .Quit End With