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

[WDxx] Problème d'utilisation de EnvoieTouche

1 réponse
Avatar
Georges Peyre
Bonjour,

Un champ Activex d'Internet Explorer contient un bouton "Rechercher" à
cliquer par l'utilisateur.

A partir d'un bouton "Lancer la recherche" du menu de la fenêtre je
désire simuler un clic sur ce bouton "Rechercher"



Pour réaliser ceci j'ai saisi le code suivant dans la procédure Clic du
bouton "Lancer la recherche"

// -- Clic sur Lancer la recherche --
nPos,nPosX,nPosY sont des entiers
nPos = 24969320 // C'est la position du bouton "Rechercher" dans
le champ Activex
nPosX = PoidsFaible(nPos)
nPosY = PoidsFort(nPos)

CurseurPos(cpClient,nPosX,nPosY)
EnvoieTouche("{ENTREE,"+NumériqueVersChaîne(nPosX,"d")+","+NumériqueVersChaîne(nPosY,"d")+"}",Handle(ActiveX1))


- 1er essai -

A l'exécution, si clique 1 SEULE FOIS sur le bouton du menu "Lancer la
recherche" le curseur de la souris se positionne bien sur le bouton
"Rechercher" de l'Activex mais le mouvement ENTREE de EnvoieTouche ne
provoque pas cette action sur ce bouton.

Par contre si je clique DEUX FOIS DE SUITE sur le bouton "Lancer la
recherche" l'action ENTREE sur le bouton "Rechercher" fonctionne bien.



- 2ème essai -

J'ai donc essayé de faire exécuter ce code 2 fois en le séparant (ou
non) par une temporisation d'une seconde : çà ne marche pas !

CurseurPos(cpClient,nPosX,nPosY)
EnvoieTouche("{ENTREE,"+NumériqueVersChaîne(nPosX,"d")+","+NumériqueVersChaîne(nPosY,"d")+"}",Handle(ActiveX1))
Temporisation(100)
CurseurPos(cpClient,nPosX,nPosY)
EnvoieTouche("{ENTREE,"+NumériqueVersChaîne(nPosX,"d")+","+NumériqueVersChaîne(nPosY,"d")+"}",Handle(ActiveX1))

Même phénomène : il faut toujours cliquer 2 fois de suite pour que çà
fonctionne



Avez-vous une idée sur la raison du problème et ce que que je dois
corriger pour que çà fonctionne avec un seul clic sur
le bouton "Lancer la recherche"

Merci d'avance

Cordialement

--
Elle est pas belle la vie ?

1 réponse

Avatar
Georges Peyre
Bonjour

NOTA : Ne tenez pas compte du message original : j'ai fait une grosse
erreur d'interprétation du phénomène décrit

Par contre voilà la solution qui décrit comment concevoir une procédure
pour cliquer sur un bouton d'une page web affichée dans l'Activex de
Internet Explorer

// Il faut repérer la position du bouton dans la page
// Pour s'aider avec précision utiliser l'évènement Survol de la souris
// survol de la souris
Evénement("PositionSouris","*.*",512)
PROCEDURE PositionSouris()
Res est un entier = CurseurPos(cpClient)
Message(Res)

// Lancer la fenêtre du navigateur pour afficher la page web concernée
// -1- Positionner le curseur de la souris au centre du bouton à
cliquer
// -2- Noter le chiffre affiché dans la barre de message de la fenêtre
( exemple : 249693317 )
// -3- Positionner le curseur de la souris sur l'angle interne
Haut/Gauche du champ Activex
// -4- Noter ce chiffre affiché dans la barre de message de la fenêtre
( exemple : 2228234 )
// -5- Soustraire le chiffre -4- au chiffre -2- ( 249693317 - 2228234 =
22741083 )
// -6- Affecter le chiffre obtenu comme position du curseur dans la
procédure suivante


Créer un bouton contenant cette procédure


// Procédure Clic d'un Bouton d'exécution du clic

nPos,nPosX,nPosY sont des entiers

nPos = 22741083
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))

Cordialement

--
Elle est pas belle la vie ?