Question [Résolu] Rafraichir page IE avec methode refresh()

Plus d'informations
il y a 13 ans 9 mois #7276 par Régis LOUIS
Bonjour,

Comment utiliser la méthode refresh() lorque l'on crée un objet IE

N'ayant pas réussi à utiliser cette méthode, actuellement, je suis obligé de killer le process iexplore et recharger la page htm par la cmdlet invoke-item. Ce qui est très lourd visuellement.


Je génère un .htm tout le long du déroulement du script powershell pour indiquer dans quelle étape il se trouve.<br><br>Message édité par: Arnaud, à: 28/06/10 15:54

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #7279 par Laurent Dardenne
Salut,
rnglouis écrit:

N'ayant pas réussi à utiliser cette méthode, actuellement

Avec quel code ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #7280 par Régis LOUIS
avec le code suivant :

[code:1]$oIE=new-object -com internetexplorer.application
$oIE.navigate2(\&quot;C:\mon-fichier-en-local.htm\&quot;«»)
while ($oIE.busy) {
sleep -milliseconds 50
}
$oIE.visible = $true[/code:1]


Je fais référence à cet article sur votre site qui montre les propriétés de l'objet COM d'IE.
www.powershell-scripting.com/index.php?o...id=332&Itemid=73

Je voulais utiliser la méthode refresh() me permettant de recharger une page sans avoir à la rouvrir dans une autre fenêtre mais sans succès.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #7281 par Régis LOUIS
J'ai posté un peu vite.

Cela fonctionne bien dans une fenêtre powershell quand je tape :
$oie.refresh() ou $oie.refresh2()

J'utilise un éditeur Powershell qui apparemment ne supporte pas bien l'appel à ce composant com.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 8 mois #7302 par Régis LOUIS
J'ai quand même un souci. La manipulation de l'objet COM Internet Explorer n'est pas si simple

J'ai créé une fonction pour pallier au problème au cas où l'opérateur fermerait par erreur la fenêtre IE en utilisant la fonction try catch. Si la fenêtre IE est fermée et qu'on utilise la méthode Refresh, cela génère une erreur.



[code:1]$oIE=new-object -ComObject \&quot;InternetExplorer.Application\&quot;
$oIE.visible = $true
$oIE.navigate(\&quot;c:\mon_fichier.htm\&quot;«»)
$oIE.document


Start-Sleep -Seconds 5
function IE_Refresh {
try
{
$oIE.refresh()
}
catch
{
$oIE=new-object -ComObject internetExplorer.application
$oIE.navigate(\&quot;c:\mon_fichier.htm\&quot;«»)
$oIE.visible = $true
}
$Error.Clear()
}

IE_Refresh[/code:1]

Quand la fenêtre IE n'est pas fermée. Ma page est bien rafraichie.

Quand je ferme la fenêtre IE, la fonction part bien dans la partie Catch et me recrée mon objet IE

Par contre, au prochain passage de la fonction, au lieu de me rafraichir la page, il me crée une autre fenêtre ie.

Je suppose que lorsqu'il y a une erreur, elle est enregistrée et que le catch doit garder quelque part cette exception.

Je n'ai pas trouvé le moyen de réinitialiser pour qu'il reparte normalement.

Comment faire pour que la fonction reparte normalement sur le refresh ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 8 mois #7304 par Laurent Dardenne
rnglouis écrit:

Par contre, au prochain passage de la fonction, au lieu de me rafraichir la page, il me crée une autre fenêtre ie.

Oui c'est normal, tu demandes de créer un nouvel objet (New-Object) au lieu de récupérer l'objet process existant.
rnglouis écrit:

Je suppose que lorsqu'il y a une erreur, elle est enregistrée et que le catch doit garder quelque part cette exception.

Si je me souviens bien l'exception courante est accessible via la variable $_ .
rnglouis écrit:

Comment faire pour que la fonction reparte normalement sur le refresh ?

il faut récupérer l'instance existante de IE, comme indiqué dans ce post .

Ou dissocier le refresh de la recréation du process, puisque tu es en v2 tu peux utiliser ceci :
[code:1]
#si le process se termine on le relance automatiquement.
# Puis on se réabonne au même événement
$sbPI={
Unregister-Event \&quot;ProcessInfo.Exited\&quot; -ea \&quot;SilentlyContinue\&quot;
$ProcessInfo=Start-Process \&quot;iexplore.exe\&quot;
Register-ObjectEvent $ProcessInfo Exited -SourceIdentifier ProcessInfo.Exited –action ($sbPI -as [Scriptblock])
}

#Démarre \&quot;l'auto surveillance\&quot;
&amp;$sbPI
#Si on ferme PS ce mécanisme est rompu.
IE_Refresh
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.078 secondes
Propulsé par Kunena