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

Demande aide sur utilisation Envoietouche avec Activex IE

4 réponses
Avatar
GpEp
Bonjour

Je charge un site dans un champ Activex de Internet Explorer avec le
code suivant :
-1- je sélectionne un champ radio ( équivalent champ interrupteur )
dont NAME=typequelconque dans le code HTML du source de la page
chargée
-2- je charge
- l'identifiant du site dans un champ HTML libellé dont NAME=login
dans le code HTML du source de la page chargée
- le mot de passe dans un champ HTML libellé dont NAME=password dans
le code HTML du source de la page chargée
-3- je clique sur le bouton de la connexion ( SUBMIT dans le code HTML
du source de la page chargée )

--------- début du code ---------
mhtmDoc3 est un objet OLE dynamique // HTMLDocument3
mdocDocument est un objet OLE dynamique // HTMLDocument
mhtmInputBox est un objet OLE dynamique // HTMLInputElement

mhtmDoc3 = ActiveX1>>Document

TagName est une chaîne

// Bouton radio
TagName = "typequelconque"
mhtmInputBox = mhtmDoc3>>getElementById(TagName)
mhtmInputBox>>Click

// champ libelle de l'identifiant
TagName = "login"
mhtmInputBox = mhtmDoc3>>getElementById(TagName)
mhtmInputBox>>value("yyyyyy")
Temporisation(50)

// champ libelle du mot de passe
TagName = "password"
mhtmInputBox = mhtmDoc3>>getElementById(TagName)
mhtmInputBox>>value("xxxxxxx")
Temporisation(50)

// bouton submit de la connexion
TagName = "authentificationSubmit"
mhtmInputBox = mhtmDoc3>>getElementById(TagName)
mhtmInputBox>>Click

libérer(mhtmDoc3)
libérer(mdocDocument)
libérer(mhtmInputBox)
--------- fin du code --------

Ce code marche parfaitement excepté que les champs login et password
qui sont bien chargés ne sont pas pris en compte par le site web (
comme s'ils n'avaient pas été écrits ) alors que je les vois bien dans
les champs, que le bouton radio est bien sélectionné et que le submit
est bien exécuté.

Ma question est donc la suivante :
Au lieu d'utiliser ce code je voudrais utiliser EnvoieTouche qui
simulera peut-être une véritable frappe dans les champs HTML de
l'activex.
Pouvez-vous m'indiquer comment utiliser EnvoieTouche pour sélectionner
le bouton radio et charger les champs login et password ?

Merci d'avance

Cordialement

4 réponses

Avatar
Romain PETIT
GpEp a écrit :

Bonjour,

Ma question est donc la suivante :
Au lieu d'utiliser ce code je voudrais utiliser EnvoieTouche qui simulera
peut-être une véritable frappe dans les champs HTML de l'activex.
Pouvez-vous m'indiquer comment utiliser EnvoieTouche pour sélectionner le
bouton radio et charger les champs login et password ?



EnvoieTouche fonctionne comme si l'utilisateur appuyait sur la touche.

Tout le problème est de donner à tes champs le focus au bon moment
(entrée dans le champ et envoitouche), ce qui n'est pas forcément
facile avec un champ qui n'est pas directement contrôlé.

Vois quand même ce que donne DonneFocus (ou sysfocus) pour donner le
focus à la page gérée par l'activeX, et ensuite essaye de naviguer dans
les différents champs avec envoietouche({TAB}) pour tabuler.

A+

--
Romain PETIT
contact : http://cerbermail.com/?O16kfXOFcq
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Avatar
GpEp
Bonjour Romain,

Apres plusieurs tests je me suis rendu compte que ce ne sont pas les
saisies de l'identifiant et du mot de passe qui sont en cause mais
c'est le code ...
mhtmInputBox = mhtmDoc3>>getElementById(TagName)
mhtmInputBox>>click
... qui n'est pas identique au vrai click fait avec la souris sur le
bouton submit


Grâce à tes conseils j'ai trouvé une solution qui fonctionne mais qui
n'est vraiment pas élégante.


-1- Pour récupérer la position du curseur dans la page de l'activex
j'ai mis ce code dans la zone survol de la souris du champ activex
Res est un entier = CurseurPos(cpClient)
Message(Res)

J'ai récupéré la valeur 27591391

-2- J'ai remplacé le code
// bouton submit
//TagName = "authentificationSubmit"
//mhtmInputBox = mhtmDoc3>>getElementById(TagName)
//mhtmInputBox>>click

... par le code utilisant EnvoieTouche :

nPos,nPosX,nPosY sont des entiers

nPos = 27591391
nPosX = PoidsFaible(nPos)
nPosY = PoidsFort(nPos)

// simulation du clic sur le bouton de l'Activex
CurseurPos(cpClient,nPosX,nPosY)
EnvoieTouche("{BTNGAUCHE,"+NumériqueVersChaîne(nPosX,"d")+","+NumériqueVersChaîne(nPosY,"d")+"}",Handle(ActiveX1))


Celà marche alors parfaitement comme si j'avais cliqué sur le bouton :

------

Aurais-tu une idée sur la raison qui fait que "mhtmInputBox>>click" ne
réagit pas correctement ?
Y aurait-il une solution plus élégante ?

Merci encore pour ton aide

Cordialement





Romain PETIT avait prétendu :
GpEp a écrit :

Bonjour,

Ma question est donc la suivante :
Au lieu d'utiliser ce code je voudrais utiliser EnvoieTouche qui simulera
peut-être une véritable frappe dans les champs HTML de l'activex.
Pouvez-vous m'indiquer comment utiliser EnvoieTouche pour sélectionner le
bouton radio et charger les champs login et password ?



EnvoieTouche fonctionne comme si l'utilisateur appuyait sur la touche.

Tout le problème est de donner à tes champs le focus au bon moment (entrée
dans le champ et envoitouche), ce qui n'est pas forcément facile avec un
champ qui n'est pas directement contrôlé.

Vois quand même ce que donne DonneFocus (ou sysfocus) pour donner le focus à
la page gérée par l'activeX, et ensuite essaye de naviguer dans les
différents champs avec envoietouche({TAB}) pour tabuler.

A+


Avatar
Romain PETIT
Il se trouve que GpEp a formulé :
Aurais-tu une idée sur la raison qui fait que "mhtmInputBox>>click" ne réagit
pas correctement ?



Tu es sûr du nom "authentificationSubmit" ? (pas de A majucule ?)

Y aurait-il une solution plus élégante ?



Acune idée...

Merci encore pour ton aide



A+

--
Romain PETIT
contact : http://cerbermail.com/?O16kfXOFcq
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Avatar
GpEp
>Romain PETIT a exprimé avec précision :
Tu es sûr du nom "authentificationSubmit" ? (pas de A majucule ?)



J'en suis absolument sûr du fait que si le NAME d'un objet n'est pas
trouvé lors de l'exécution il y a un plantage de la fonction.

C'est quand même Ok pour moi

Merci encore infiniment