Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Activex Web Browser

11 réponses
Avatar
Pierre BOUSQUET
Bonjour,

j'utilise un activex 'WebBrowser' (ou "Shell.Explorer") dans ma fenetre
pour afficher une page Internet.

Comment récupérer le code HTML de cette page depuis cet Activex

Merci d'avance

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "

10 réponses

1 2
Avatar
paratge
Pierre BOUSQUET a écrit :
Bonjour,

j'utilise un activex 'WebBrowser' (ou "Shell.Explorer") dans ma fenetre
pour afficher une page Internet.

Comment récupérer le code HTML de cette page depuis cet Activex

Merci d'avance




Bonjour,

Il y a eu des posts à ce sujet, mais trop lourds à mon gout.

Pour ma part, je préfère utiliser un champ html avec les commandes
HTTPRequete et HTTPResultat qui permetent de récupérer le code de la
page sous forme de fichier texte et de le traiter comme tu le souhaites.

mais ce n'est que mon avis.

Bon dev
Avatar
Georges Peyre
Bonsoir

Pierre BOUSQUET a présenté l'énoncé suivant :
j'utilise un activex 'WebBrowser' (ou "Shell.Explorer") dans ma fenetre pour
afficher une page Internet.

Comment récupérer le code HTML de cette page depuis cet Activex



Récupération du source HTML
WRecupere = activex1>>Document>>body>>outerHTML


Recupération du texte
WRecupere = ActiveX1>>Document>>body>>outertext

Cordialement

--
Elle est pas belle la vie ?
Avatar
Pierre BOUSQUET
merci mais ce champ et bien trop limité à mon gout.

Après mûre réflexion, paratge a écrit :
Pierre BOUSQUET a écrit :
Bonjour,

j'utilise un activex 'WebBrowser' (ou "Shell.Explorer") dans ma fenetre
pour afficher une page Internet.

Comment récupérer le code HTML de cette page depuis cet Activex

Merci d'avance




Bonjour,

Il y a eu des posts à ce sujet, mais trop lourds à mon gout.

Pour ma part, je préfère utiliser un champ html avec les commandes
HTTPRequete et HTTPResultat qui permetent de récupérer le code de la page
sous forme de fichier texte et de le traiter comme tu le souhaites.

mais ce n'est que mon avis.

Bon dev



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Avatar
Pierre BOUSQUET
Génial, merci bcp.



Le 06/03/2007, Georges Peyre a supposé :
Bonsoir

Pierre BOUSQUET a présenté l'énoncé suivant :
j'utilise un activex 'WebBrowser' (ou "Shell.Explorer") dans ma fenetre
pour afficher une page Internet.

Comment récupérer le code HTML de cette page depuis cet Activex



Récupération du source HTML
WRecupere = activex1>>Document>>body>>outerHTML


Recupération du texte
WRecupere = ActiveX1>>Document>>body>>outertext

Cordialement



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Avatar
Georges Peyre
Bonjour

Dans son message précédent, paratge a écrit :

Pour ma part, je préfère utiliser un champ html avec les commandes
HTTPRequete et HTTPResultat qui permetent de récupérer le code de la page
sous forme de fichier texte et de le traiter comme tu le souhaites.



Mais dans ce cas comment résoudre ce problème :

Lors de l'affichage d'une page web dans un champ HTML le message
suivant peut apparaitre :
"Les scripts sont généralement sûrs"
"Voulez-vous autoriser l'exécution de ces scripts ?"

Par contre, si on utilise le champ Activex de IE on peut facilement
supprimer l'affichage de ce message avec la commande suivante :
// suppression des messages de type script
ActiveX1>>silent=True


QUESTION
Comment supprimer ce message lors de l'affichage d'une page dans le
champ HTML ?

Cordialement


--
Elle est pas belle la vie ?
Avatar
Georges Peyre
Bonjour,

Lors de l'affichage d'une page web dans un champ HTML le message
suivant peut apparaitre :
"Les scripts sont généralement sûrs"
"Voulez-vous autoriser l'exécution de ces scripts ?"

Par contre, si on utilise le champ Activex de IE on peut facilement
supprimer l'affichage de ce message avec la commande suivante :
// suppression des messages de type script
ActiveX1>>silent=True

QUESTION
Comment supprimer ce message lors de l'affichage d'une page dans le
champ HTML ?



J'ai trouvé une solution peu élégante, mais efficace, pour supprimer ce
message :

Tout d'abord je dois préciser que le texte HTML que je désire afficher
est celui d'un message au format HTML.
Donc avant de charger le texte dans le champ j'inhibe les information
du source HTML qui provoquent le déclenchement le message d'alerte des
scripts.

Je transforme les scripts en commentaires :
MAIL.contenu = Remplace(MAIL.contenu,"<script","<!--")
MAIL.contenu = Remplace(MAIL.contenu,"</script>","-->")

Je supprime les fonctions input
MAIL.contenu = Remplace(MAIL.contenu,"input","aucun")
SHTML1 = MAIL.contenu
... celà a pour effet de supprimer les boutons

Tout commentaire sur cette méthode sera le bienvenu

Cordialement

--
Elle est pas belle la vie ?
Avatar
Pierre BOUSQUET
Autre question sur ce sujet, quelqu'un sait-il comment récupérer le
"name" ou l'"id" du champ survolé. Par exemple une propriété que l'on
mettrait dans l'evenement "StatusTextChange"

Merci d'avance

Pierre BOUSQUET a exposé le 06/03/2007 :
Bonjour,

j'utilise un activex 'WebBrowser' (ou "Shell.Explorer") dans ma fenetre pour
afficher une page Internet.

Comment récupérer le code HTML de cette page depuis cet Activex

Merci d'avance



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Avatar
Georges Peyre
Pierre BOUSQUET a exprimé avec précision :
Autre question sur ce sujet, quelqu'un sait-il comment récupérer le "name" ou
l'"id" du champ survolé. Par exemple une propriété que l'on mettrait dans
l'evenement "StatusTextChange"




WUrlSurvolee est une chaine
// récupération des URL lorsque la souris passe sur un LIEN
ActiveXEvénement("PLinks",ActiveX1,"StatusTextChange")

PROCEDURE PLinks(TitreBarre)
NPos est un entier
// TitreBarre contient l'URL survolée par la souris
//trace(titrebarre)
Message(TitreBarre)
SI PAS SansEspace(TitreBarre) = "" ET PAS SansEspace(TitreBarre) =
"Terminé" ALORS
WUrlSurvolee = WUrlSurvolee + TitreBarre + RC
NPos = CurseurPos(cpClient)
WUrlSurvolee = WUrlSurvolee + NPos + RC
FIN

Cordialement

--
Elle est pas belle la vie ?
Avatar
Pierre BOUSQUET
merci mais ca ne me donne pas le name ou l'id de l'element
on fait ce que je cherche à faire c'est une macro de ce que fait
l'utilisateur sur la page, par exemple il a un choix à faire dans une
liste, et quand il clique sur un element j'enregistre l'action, idem
pour des checkbox...

il y aurait une autre solution : scanncer l'ensemble des objets et
leurs valeurs au moment du "submit", peut-être avec la fonction
"getElementsByTagName", mais je n'ai pas encore trouvé...

Georges Peyre avait écrit le 08/03/2007 :
Pierre BOUSQUET a exprimé avec précision :
Autre question sur ce sujet, quelqu'un sait-il comment récupérer le "name"
ou l'"id" du champ survolé. Par exemple une propriété que l'on mettrait
dans l'evenement "StatusTextChange"




WUrlSurvolee est une chaine
// récupération des URL lorsque la souris passe sur un LIEN
ActiveXEvénement("PLinks",ActiveX1,"StatusTextChange")

PROCEDURE PLinks(TitreBarre)
NPos est un entier
// TitreBarre contient l'URL survolée par la souris
//trace(titrebarre)
Message(TitreBarre)
SI PAS SansEspace(TitreBarre) = "" ET PAS SansEspace(TitreBarre) = "Terminé"
ALORS
WUrlSurvolee = WUrlSurvolee + TitreBarre + RC
NPos = CurseurPos(cpClient)
WUrlSurvolee = WUrlSurvolee + NPos + RC
FIN

Cordialement



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Avatar
Pierre BOUSQUET
Si ca interesse quelqu'un, j'ai fait une fonction qui liste des objets,
j'ai plus qu'à l'appeler sur l'evenement clic du browser et le tour est
joué :

Trace(XWEB_ListeObjects("INPUT"))



PROCEDURE XWEB_ListeObjects(ObjetDemande="")
b est entier
HTMLInputElement est un objet Automation dynamique
HTMLObject est un objet Automation dynamique
TagObjet est chaîne
TypeObjet est chaîne
ValRetour est chaîne

HTMLInputElement¬tiveX_Web>>document>>all

POUR b=0 A HTMLInputElement>>Length-1
HTMLObject = HTMLInputElement>>Item(b, 0)
TagObjet = HTMLObject>>Tagname

QUAND EXCEPTION DANS
TypeObjet=HTMLObject>>Type
FAIRE
FIN

SI ObjetDemande<>"" ALORS
SI TagObjet<>ObjetDemande ALORS
SI TypeObjet<>ObjetDemande ALORS
CONTINUER
FIN
FIN
FIN

SI ValRetour<>"" ALORS ValRetour+=RC

ValRetour+=TagObjet+TAB+TypeObjet

QUAND EXCEPTION DANS
ValRetour+=TAB+HTMLObject>>name
FAIRE
ValRetour+=TAB
FIN

QUAND EXCEPTION DANS
SI Minuscule(TypeObjet) DANS ("checkbox","radio") ALORS
SI HTMLObject>>checked() ALORS
ValRetour+=TAB+HTMLObject>>value
SINON
ValRetour+=TAB
FIN
SINON
ValRetour+=TAB+HTMLObject>>value
FIN

FAIRE
ValRetour+=TAB
FIN
FIN

libérer HTMLInputElement
libérer HTMLObject

RENVOYER ValRetour

Pierre BOUSQUET a formulé ce jeudi :
merci mais ca ne me donne pas le name ou l'id de l'element
on fait ce que je cherche à faire c'est une macro de ce que fait
l'utilisateur sur la page, par exemple il a un choix à faire dans une liste,
et quand il clique sur un element j'enregistre l'action, idem pour des
checkbox...

il y aurait une autre solution : scanncer l'ensemble des objets et leurs
valeurs au moment du "submit", peut-être avec la fonction
"getElementsByTagName", mais je n'ai pas encore trouvé...

Georges Peyre avait écrit le 08/03/2007 :
Pierre BOUSQUET a exprimé avec précision :
Autre question sur ce sujet, quelqu'un sait-il comment récupérer le "name"
ou l'"id" du champ survolé. Par exemple une propriété que l'on mettrait
dans l'evenement "StatusTextChange"




WUrlSurvolee est une chaine
// récupération des URL lorsque la souris passe sur un LIEN
ActiveXEvénement("PLinks",ActiveX1,"StatusTextChange")

PROCEDURE PLinks(TitreBarre)
NPos est un entier
// TitreBarre contient l'URL survolée par la souris
//trace(titrebarre)
Message(TitreBarre)
SI PAS SansEspace(TitreBarre) = "" ET PAS SansEspace(TitreBarre) =
"Terminé" ALORS
WUrlSurvolee = WUrlSurvolee + TitreBarre + RC
NPos = CurseurPos(cpClient)
WUrlSurvolee = WUrlSurvolee + NPos + RC
FIN

Cordialement





--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
1 2