Question [Résolu] Rafraichir page IE avec methode refresh()
- Régis LOUIS
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 14
- Remerciements reçus 0
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6300
- Remerciements reçus 68
rnglouis écrit:
Avec quel code ?N'ayant pas réussi à utiliser cette méthode, actuellement
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Régis LOUIS
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 14
- Remerciements reçus 0
[code:1]$oIE=new-object -com internetexplorer.application
$oIE.navigate2(\"C:\mon-fichier-en-local.htm\"«»)
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.
- Régis LOUIS
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 14
- Remerciements reçus 0
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.
- Régis LOUIS
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 14
- Remerciements reçus 0
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 \"InternetExplorer.Application\"
$oIE.visible = $true
$oIE.navigate(\"c:\mon_fichier.htm\"«»)
$oIE.document
Start-Sleep -Seconds 5
function IE_Refresh {
try
{
$oIE.refresh()
}
catch
{
$oIE=new-object -ComObject internetExplorer.application
$oIE.navigate(\"c:\mon_fichier.htm\"«»)
$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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6300
- Remerciements reçus 68
Oui c'est normal, tu demandes de créer un nouvel objet (New-Object) au lieu de récupérer l'objet process existant.Par contre, au prochain passage de la fonction, au lieu de me rafraichir la page, il me crée une autre fenêtre ie.
rnglouis écrit:
Si je me souviens bien l'exception courante est accessible via la variable $_ .Je suppose que lorsqu'il y a une erreur, elle est enregistrée et que le catch doit garder quelque part cette exception.
rnglouis écrit:
il faut récupérer l'instance existante de IE, comme indiqué dans ce post .Comment faire pour que la fonction reparte normalement sur le refresh ?
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 \"ProcessInfo.Exited\" -ea \"SilentlyContinue\"
$ProcessInfo=Start-Process \"iexplore.exe\"
Register-ObjectEvent $ProcessInfo Exited -SourceIdentifier ProcessInfo.Exited –action ($sbPI -as [Scriptblock])
}
#Démarre \"l'auto surveillance\"
&$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.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- [Résolu] Rafraichir page IE avec methode refresh()