[WDx] Besoin d'aide SVP pour l'utilisation de Webbrowser
1 réponse
Georges Peyre
Bonjour,
J'utilise sans problème ce code et qui marche sans problème jusqu'à ce
jour : il permet de mettre en surbrillance un mot recherché chaque fois
qu'il est trouvé dans la page en cours d'affichage.
Il marche correctement dans les pages multi-frames à l'exception de
certaines pages du site de PCSOFT comme par exemple celle_ci qui
affiche la liste des sujets des LST
http://www.pcsoft.fr/st/nouveautes-st.html
Le plantage est le suivant :
Erreur à la ligne 10 du traitement Procédure globale RechercheDoc.
Vous accédez au membre Automation document.
En tentant d'invoquer la méthode <document> ou de lire la propriété
<document>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 80070005 : Accès refusé.
'
En tentant de lire la propriété <document>, l'objet Automation/ActiveX
a renvoyé l'erreur suivante :
'Erreur 80070005 : Accès refusé.
'
En tentant d'invoquer la méthode <document>, l'objet Automation/ActiveX
a renvoyé l'erreur suivante :
'Erreur 80004001'
Mes questions sont les suivantes :
-1- Quelle est la particularité de cette page sur le plan des frames ?
-2- Que dois-je corriger pour que cette particularité soit prise en
compte dans le code suivant
Merci d'avance
Cordialement
------------- CODE A TESTER ------------------
Code à placer dans la fenêtre contenant l'activex navigate ( nommé
HTML_EXPLORER )
// ces 2 variables sont déclarées en global dans la fenêtre
copie est un tableau de 2000 chaînes
nbcopie est un entier
// Code du bouton de lancement de la recherche dans la page affichée
// MonTxt est le champ contenant le mot cherché
SI MonTxt = "" ALORS RETOUR
RazCopie // remet le tableau à blanc
letxt est une chaîne = MonTxt // zone de saisie contenant le texte à
rechercher
NbCopie=0 // entier déclaré en global
docframe est un objet Automation dynamique = HTML_EXPLORER>>document
RechercheDoc(docframe,letxt)
libérer docframe
PROCEDURE RechercheDoc(doc,LeTxt)
// Recherche d'un mot dans le document affiché : pages avec ou sans
frames
NbCopie++
nbcadre est un entier = doc>>frames>>length
SI nbcadre > 0 ALORS
i est un entier
POUR i=1 A nbcadre
( LE PLANTAGE SE PRODUIT SUR LA LIGNE QUI SUIT )
docf est un objet Automation dynamique = doc>>frames(i-1)>>document
RechercheDoc(docf,LeTxt)
libérer docf
FIN
SINON
SI Copie[NbCopie]<>"" ALORS
doc>>body>>innerHTML(Copie[NbCopie])
FIN
Copie[NbCopie]=doc>>body>>innerHTML
txtr est un objet Automation dynamique = doc>>body>>createTextRange()
SI txtr>>findText(LeTxt)=1 ALORS
txtr>>scrollIntoView()
FIN
TANTQUE txtr>>findText(LeTxt)=1
txtr>>execCommand("Bold")
txtr>>execCommand("Backcolor",False,"blue")
txtr>>execCommand("ForeColor",False,"white")
txtr>>execCommand("BackGroundColor",True,"white")
txtr>>collapse(False)
FIN
libérer txtr
FIN
PROCEDURE RazCopie()
z est un entier
POUR z = 1 A 2000
Copie[z] = ""
FIN
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Georges Peyre
Bonjour,
En continuant mes recherches pour trouver une solution à mon problème j'ai trouvé que mon problème est lié à la prise en compte des IFRAMES alors que ce code traite les FRAMES
Ma question est donc la suivante : comment modifier ce code pour lire les documents IFRAMES
Merci d'avance
Cordialement
------------- CODE A TESTER ------------------
Code à placer dans la fenêtre contenant l'activex navigate ( nommé HTML_EXPLORER )
// ces 2 variables sont déclarées en global dans la fenêtre copie est un tableau de 2000 chaînes nbcopie est un entier
// Code du bouton de lancement de la recherche dans la page affichée // MonTxt est le champ contenant le mot cherché SI MonTxt = "" ALORS RETOUR
RazCopie // remet le tableau à blanc
letxt est une chaîne = MonTxt // zone de saisie contenant le texte à rechercher NbCopie=0 // entier déclaré en global
docframe est un objet Automation dynamique = HTML_EXPLORER>>document RechercheDoc(docframe,letxt) libérer docframe
PROCEDURE RechercheDoc(doc,LeTxt) // Recherche d'un mot dans le document affiché : pages avec ou sans frames NbCopie++ nbcadre est un entier = doc>>frames>>length SI nbcadre > 0 ALORS i est un entier POUR i=1 A nbcadre ( LE PLANTAGE SE PRODUIT SUR LA LIGNE QUI SUIT ) docf est un objet Automation dynamique = doc>>frames(i-1)>>document RechercheDoc(docf,LeTxt) libérer docf FIN SINON SI Copie[NbCopie]<>"" ALORS doc>>body>>innerHTML(Copie[NbCopie]) FIN Copie[NbCopie]=doc>>body>>innerHTML txtr est un objet Automation dynamique = doc>>body>>createTextRange() SI txtr>>findText(LeTxt)=1 ALORS txtr>>scrollIntoView() FIN TANTQUE txtr>>findText(LeTxt)=1 txtr>>execCommand("Bold") txtr>>execCommand("Backcolor",False,"blue") txtr>>execCommand("ForeColor",False,"white") txtr>>execCommand("BackGroundColor",True,"white") txtr>>collapse(False) FIN libérer txtr FIN
PROCEDURE RazCopie() z est un entier POUR z = 1 A 2000 Copie[z] = "" FIN
-- Elle est pas belle la vie ?
Bonjour,
En continuant mes recherches pour trouver une solution à mon problème
j'ai trouvé que mon problème est lié à la prise en compte des IFRAMES
alors que ce code traite les FRAMES
Ma question est donc la suivante : comment modifier ce code pour lire
les documents IFRAMES
Merci d'avance
Cordialement
------------- CODE A TESTER ------------------
Code à placer dans la fenêtre contenant l'activex navigate ( nommé
HTML_EXPLORER )
// ces 2 variables sont déclarées en global dans la fenêtre
copie est un tableau de 2000 chaînes
nbcopie est un entier
// Code du bouton de lancement de la recherche dans la page affichée
// MonTxt est le champ contenant le mot cherché
SI MonTxt = "" ALORS RETOUR
RazCopie // remet le tableau à blanc
letxt est une chaîne = MonTxt // zone de saisie contenant le texte à
rechercher
NbCopie=0 // entier déclaré en global
docframe est un objet Automation dynamique = HTML_EXPLORER>>document
RechercheDoc(docframe,letxt)
libérer docframe
PROCEDURE RechercheDoc(doc,LeTxt)
// Recherche d'un mot dans le document affiché : pages avec ou sans frames
NbCopie++
nbcadre est un entier = doc>>frames>>length
SI nbcadre > 0 ALORS
i est un entier
POUR i=1 A nbcadre
( LE PLANTAGE SE PRODUIT SUR LA LIGNE QUI SUIT )
docf est un objet Automation dynamique = doc>>frames(i-1)>>document
RechercheDoc(docf,LeTxt)
libérer docf
FIN
SINON
SI Copie[NbCopie]<>"" ALORS
doc>>body>>innerHTML(Copie[NbCopie])
FIN
Copie[NbCopie]=doc>>body>>innerHTML
txtr est un objet Automation dynamique = doc>>body>>createTextRange()
SI txtr>>findText(LeTxt)=1 ALORS
txtr>>scrollIntoView()
FIN
TANTQUE txtr>>findText(LeTxt)=1
txtr>>execCommand("Bold")
txtr>>execCommand("Backcolor",False,"blue")
txtr>>execCommand("ForeColor",False,"white")
txtr>>execCommand("BackGroundColor",True,"white")
txtr>>collapse(False)
FIN
libérer txtr
FIN
PROCEDURE RazCopie()
z est un entier
POUR z = 1 A 2000
Copie[z] = ""
FIN
En continuant mes recherches pour trouver une solution à mon problème j'ai trouvé que mon problème est lié à la prise en compte des IFRAMES alors que ce code traite les FRAMES
Ma question est donc la suivante : comment modifier ce code pour lire les documents IFRAMES
Merci d'avance
Cordialement
------------- CODE A TESTER ------------------
Code à placer dans la fenêtre contenant l'activex navigate ( nommé HTML_EXPLORER )
// ces 2 variables sont déclarées en global dans la fenêtre copie est un tableau de 2000 chaînes nbcopie est un entier
// Code du bouton de lancement de la recherche dans la page affichée // MonTxt est le champ contenant le mot cherché SI MonTxt = "" ALORS RETOUR
RazCopie // remet le tableau à blanc
letxt est une chaîne = MonTxt // zone de saisie contenant le texte à rechercher NbCopie=0 // entier déclaré en global
docframe est un objet Automation dynamique = HTML_EXPLORER>>document RechercheDoc(docframe,letxt) libérer docframe
PROCEDURE RechercheDoc(doc,LeTxt) // Recherche d'un mot dans le document affiché : pages avec ou sans frames NbCopie++ nbcadre est un entier = doc>>frames>>length SI nbcadre > 0 ALORS i est un entier POUR i=1 A nbcadre ( LE PLANTAGE SE PRODUIT SUR LA LIGNE QUI SUIT ) docf est un objet Automation dynamique = doc>>frames(i-1)>>document RechercheDoc(docf,LeTxt) libérer docf FIN SINON SI Copie[NbCopie]<>"" ALORS doc>>body>>innerHTML(Copie[NbCopie]) FIN Copie[NbCopie]=doc>>body>>innerHTML txtr est un objet Automation dynamique = doc>>body>>createTextRange() SI txtr>>findText(LeTxt)=1 ALORS txtr>>scrollIntoView() FIN TANTQUE txtr>>findText(LeTxt)=1 txtr>>execCommand("Bold") txtr>>execCommand("Backcolor",False,"blue") txtr>>execCommand("ForeColor",False,"white") txtr>>execCommand("BackGroundColor",True,"white") txtr>>collapse(False) FIN libérer txtr FIN
PROCEDURE RazCopie() z est un entier POUR z = 1 A 2000 Copie[z] = "" FIN