[..] Aide pour fixer le MouseMove (Control/Position)
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
Izarra4autoit
- Niveau 2

- Messages : 17
- Enregistré le : mar. 21 mai 2013 16:08
- Status : Hors ligne
[..] Aide pour fixer le MouseMove (Control/Position)
Bonjour,
Après de longues recherches dans ce forum, je n'arrive toujours pas à m'en sortir !
je crois sincèrement que la solution sera très simple, mais je sèche après plus de 3 semaines de diverses manipulations
Alors je demandes de l'aide!
Merci infiniment!
Alors voilà
j'ai développé un script utilisant IE.au3 : ce script fonctionne très bien tant que je reste sur ce PC et que je ne modifies pas les barres d'adresses ...
je charge une fenetre IE avec le bon contenu, puis je dois cliquer à une position très précise (lien java) de la page IE pour lancer d'autres routines.
Le seul moyen que j'ai trouvé pour parvenir à cette première étape, c'est d'utiliser la fenêtre Windows AutoIt V3 WindowInfo qui me donne bien les éléments ci dessous, dont la valeur qui m'intéresse : Position
(dans l'ex ci dessous on a Position=0,67)
Je range cette valeur 67 dans une variable et je m'en sers dans mon script général pour exécuter des commandes
MouseClick("left",$xPos,$yPos+$PositionInitiale)
ca marche bien, mais si je rajoute une toolbar, ou bien une barre d'options ou encore la barre Google à mon navigateur IE, alors le mousemove ne marche plus, et je dois relire la position relative du champ POSITION dans la fenetre ci--dessous
et ca remarchera jusqu'à nouvelle modification
ce que je souhaiterais faire, c'est récupérer cette valeur Position de la fenetre CONTROL pour l'affecter dynamiquement dans mon script. Comme cela, quelle que soit la configuration sur laquelle je serai, et quelle que soit la config du IE avec ou sans toolbars, le mousemove s'effectuera bioen là ou je le souhaite.*
>>>> Control <<<<
Class: Internet Explorer_Server
Instance: 1
ClassnameNN: Internet Explorer_Server1
Name:
Advanced (Class): [CLASS:Internet Explorer_Server; INSTANCE:1]
ID:
Text:
Position: 0, 67
Size: 1366, 639
ControlClick Coords: 561, 259
Style: 0x56000000
ExStyle: 0x00000000
Handle: 0x002402EC
Après de longues recherches dans ce forum, je n'arrive toujours pas à m'en sortir !
je crois sincèrement que la solution sera très simple, mais je sèche après plus de 3 semaines de diverses manipulations
Alors je demandes de l'aide!
Merci infiniment!
Alors voilà
j'ai développé un script utilisant IE.au3 : ce script fonctionne très bien tant que je reste sur ce PC et que je ne modifies pas les barres d'adresses ...
je charge une fenetre IE avec le bon contenu, puis je dois cliquer à une position très précise (lien java) de la page IE pour lancer d'autres routines.
Le seul moyen que j'ai trouvé pour parvenir à cette première étape, c'est d'utiliser la fenêtre Windows AutoIt V3 WindowInfo qui me donne bien les éléments ci dessous, dont la valeur qui m'intéresse : Position
(dans l'ex ci dessous on a Position=0,67)
Je range cette valeur 67 dans une variable et je m'en sers dans mon script général pour exécuter des commandes
MouseClick("left",$xPos,$yPos+$PositionInitiale)
ca marche bien, mais si je rajoute une toolbar, ou bien une barre d'options ou encore la barre Google à mon navigateur IE, alors le mousemove ne marche plus, et je dois relire la position relative du champ POSITION dans la fenetre ci--dessous
et ca remarchera jusqu'à nouvelle modification
ce que je souhaiterais faire, c'est récupérer cette valeur Position de la fenetre CONTROL pour l'affecter dynamiquement dans mon script. Comme cela, quelle que soit la configuration sur laquelle je serai, et quelle que soit la config du IE avec ou sans toolbars, le mousemove s'effectuera bioen là ou je le souhaite.*
>>>> Control <<<<
Class: Internet Explorer_Server
Instance: 1
ClassnameNN: Internet Explorer_Server1
Name:
Advanced (Class): [CLASS:Internet Explorer_Server; INSTANCE:1]
ID:
Text:
Position: 0, 67
Size: 1366, 639
ControlClick Coords: 561, 259
Style: 0x56000000
ExStyle: 0x00000000
Handle: 0x002402EC
Re: [..] Aide pour fixer le MouseMove (Control/Position)
Salut.
Tu peux essayer ça :
Tu peux essayer ça :
Code : Tout sélectionner
$title = "Nom de la fenetre"
$pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server1]")
MsgBox(0, "position", "X = " & $pos[0] & @LF & "Y = " & $pos[1])Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
Izarra4autoit
- Niveau 2

- Messages : 17
- Enregistré le : mar. 21 mai 2013 16:08
- Status : Hors ligne
Re: [..] Aide pour fixer le MouseMove (Control/Position)
Merci Jguinchard !
C'est exactement ça que je cherchais
pour une raison que j'ignore, ma fenetre IE (lancée via IE.au3 et _ieload) s'affiche en fait en Instance 2 !
j'ai du adapter ton code en mettant soit 1 soit 2
du coup je me suis dit que je mettrai bien un test supplémentaire?
tester le numero de l'instance de la fenetre IE ouverte
afin de pouvoir exécuter la commande:
$pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server1]")
ou bien
$pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server2]")
As tu déjà fais ce genre de truc !
MErci encore !!
C'est exactement ça que je cherchais
pour une raison que j'ignore, ma fenetre IE (lancée via IE.au3 et _ieload) s'affiche en fait en Instance 2 !
j'ai du adapter ton code en mettant soit 1 soit 2
du coup je me suis dit que je mettrai bien un test supplémentaire?
tester le numero de l'instance de la fenetre IE ouverte
afin de pouvoir exécuter la commande:
$pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server1]")
ou bien
$pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server2]")
As tu déjà fais ce genre de truc !
MErci encore !!
-
Izarra4autoit
- Niveau 2

- Messages : 17
- Enregistré le : mar. 21 mai 2013 16:08
- Status : Hors ligne
Re: [..] Aide pour fixer le MouseMove (Control/Position)
Comme j'ai maintenant le problème de ne pas savoir si la fenetre que je cherche est en INSTANCE 1 ou 2
J'ai essayé plusieurs manips et plutot que d'utiliser pour $title="mafenetre web..."
la fonction:
$pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server1]")
j'utilise plutot:
$pos = ControlGetPos($title, "", "[CLASS:Internet Explorer_Server]")
par contre, en faisant comme ça, de temps en temps, le script me renvoie une erreur comme s'il ne trouvait pas la fenetre
alors, j'ai mis un timer : sleep(1000) avant le controlgetpos
Pensez vous que c'est propre ?
merki !
J'ai essayé plusieurs manips et plutot que d'utiliser pour $title="mafenetre web..."
la fonction:
$pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server1]")
j'utilise plutot:
$pos = ControlGetPos($title, "", "[CLASS:Internet Explorer_Server]")
par contre, en faisant comme ça, de temps en temps, le script me renvoie une erreur comme s'il ne trouvait pas la fenetre
alors, j'ai mis un timer : sleep(1000) avant le controlgetpos
Pensez vous que c'est propre ?
merki !
-
Izarra4autoit
- Niveau 2

- Messages : 17
- Enregistré le : mar. 21 mai 2013 16:08
- Status : Hors ligne
Re: [..] Aide pour fixer le MouseMove (Control/Position)
Après vérifications, et sur 3 pc différents qui ont chacun leur propres barre d'outils et barre de recherche, linstance de ma fenetre peut varier de 1 à 3
comment faire pour executer le bon ControlGetPos ?
la réponse de Jguinchard m'a beaucoup aidé à y voir plus clair
Du coup, je fais des mouseclick("left",$xpos,$ypos+$POS)
$xpos,$ypos sont mes coordonnées dans ma fenetre principale et $pos le décalage à utiliser !
sur mon PC 1,
ça marche avec $pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server1]")
par contre sur mon PC2,
ça marche avec $pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server2]")
et pour le PC 3
ça marche avec $pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server3]")
j'ai bien essayé de faire comme ça
avec $pos = ControlGetPos($title, "", "[CLASS:Internet Explorer_Server]")
mais la il me donne la position de la Googlebar et non pas de ma fenetre principale !
du coup, mes mouseclick ne marchent pas à coup sur
je voudrais faire une sorte de script universel qui marche quelle que soit le pc et surtout, quels que soient le nombre de toolbars installé !
Merci d'avance !!
comment faire pour executer le bon ControlGetPos ?
la réponse de Jguinchard m'a beaucoup aidé à y voir plus clair
Du coup, je fais des mouseclick("left",$xpos,$ypos+$POS)
$xpos,$ypos sont mes coordonnées dans ma fenetre principale et $pos le décalage à utiliser !
sur mon PC 1,
ça marche avec $pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server1]")
par contre sur mon PC2,
ça marche avec $pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server2]")
et pour le PC 3
ça marche avec $pos = ControlGetPos($title, "", "[CLASSNN:Internet Explorer_Server3]")
j'ai bien essayé de faire comme ça
avec $pos = ControlGetPos($title, "", "[CLASS:Internet Explorer_Server]")
mais la il me donne la position de la Googlebar et non pas de ma fenetre principale !
du coup, mes mouseclick ne marchent pas à coup sur
je voudrais faire une sorte de script universel qui marche quelle que soit le pc et surtout, quels que soient le nombre de toolbars installé !
Merci d'avance !!
Re: [..] Aide pour fixer le MouseMove (Control/Position)
Pour trouver la bonne instance, je pense qu'il faut commencer par récupérer la liste de toutes les instances de type "Internet Explorer_Server".
Ensuite, à partir de cette liste, on peut essayer de trouver laquelle est la bonne, peut-être en fonction de sa taille ? J'imagine que l'instance qui la plus grande taille est la bonne...
Voilà un petit bout de script qui pourra peut-être t'aider :
Ensuite, à partir de cette liste, on peut essayer de trouver laquelle est la bonne, peut-être en fonction de sa taille ? J'imagine que l'instance qui la plus grande taille est la bonne...
Voilà un petit bout de script qui pourra peut-être t'aider :
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
Izarra4autoit
- Niveau 2

- Messages : 17
- Enregistré le : mar. 21 mai 2013 16:08
- Status : Hors ligne
Re: [..] Aide pour fixer le MouseMove (Control/Position)
Merci Jguinch !
je vais regarder ça de plus près et je suis sûr que ça va marcher
Mais d'un autre côté, je me demande si j'ai bien posé la question en fait ?
En effet, je ne pensais pas que cela soit si compliqué !
alors j'essayes de reposer la question différement
a noter que la page dans laquelle je dois exécuter ce script est en Java ou équivalent, et ne permet pas d'envoyer de CtrlSend ou de capturer des mots (get control text)
Donc, j'ai fait un script tout simple qui doit aller cliquer sur un emplacement bien précis de ma fenetre IE
un mouseclick tout bete en position ($x,$y+$POS) que j'ai capturé via Autoit window info (avec un control POS)
tant que j'exécute ce script sur mon PC maitre, il marche bien à chaque fois
mais si je rajoute une barre d'outils, ou si je cache la barre de menus, forcément le script ne marche plus, vu que la fenetre principale de IE a grandi ou diminué !
Sur ce même PC, si je gère le ControlGetPos, je vais m'en sortir et ça marche pas mal
par contre, si je tente d'exécuter ce script sur un autre PC, avec une version d'IE différente, et/ou avec des barres d'outils différents, la ça se complique car je peux récupérer un numéro d'instance différent !
Voulant faire un script 'universel', j'ai bataillé bien depuis un mois avec les controlgetpos et les instance, mais c'est tellement galère que je suis en train de me dire : pourquoi ranger dans un fichier INI ou TXT la valeur du CtrlGetPos du poste en cours, quitte à le modifier dès que la config IE evolue.
Si personne n'a d'idées de génie la dessus, j'irai pleurer 10mn dans le couloir mais je reviendrai très vite fermer le POST [R] ! Mais je remercie vivement tous ceux qui m'ont déjà répondu !!
CG
je vais regarder ça de plus près et je suis sûr que ça va marcher
Mais d'un autre côté, je me demande si j'ai bien posé la question en fait ?
En effet, je ne pensais pas que cela soit si compliqué !
alors j'essayes de reposer la question différement
a noter que la page dans laquelle je dois exécuter ce script est en Java ou équivalent, et ne permet pas d'envoyer de CtrlSend ou de capturer des mots (get control text)
Donc, j'ai fait un script tout simple qui doit aller cliquer sur un emplacement bien précis de ma fenetre IE
un mouseclick tout bete en position ($x,$y+$POS) que j'ai capturé via Autoit window info (avec un control POS)
tant que j'exécute ce script sur mon PC maitre, il marche bien à chaque fois
mais si je rajoute une barre d'outils, ou si je cache la barre de menus, forcément le script ne marche plus, vu que la fenetre principale de IE a grandi ou diminué !
Sur ce même PC, si je gère le ControlGetPos, je vais m'en sortir et ça marche pas mal
par contre, si je tente d'exécuter ce script sur un autre PC, avec une version d'IE différente, et/ou avec des barres d'outils différents, la ça se complique car je peux récupérer un numéro d'instance différent !
Voulant faire un script 'universel', j'ai bataillé bien depuis un mois avec les controlgetpos et les instance, mais c'est tellement galère que je suis en train de me dire : pourquoi ranger dans un fichier INI ou TXT la valeur du CtrlGetPos du poste en cours, quitte à le modifier dès que la config IE evolue.
Si personne n'a d'idées de génie la dessus, j'irai pleurer 10mn dans le couloir mais je reviendrai très vite fermer le POST [R] ! Mais je remercie vivement tous ceux qui m'ont déjà répondu !!
CG
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Aide pour fixer le MouseMove (Control/Position)
Tu peux pas utiliser les fonctions IE ?
Ce lien sur lequel tu dois cliquer, il a pas une identité dans le code source de la page ?
Ce lien sur lequel tu dois cliquer, il a pas une identité dans le code source de la page ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Aide pour fixer le MouseMove (Control/Position)
Mikell a raison, mais si c'est vraiment du Java (non pas Javascript), c'est vrai que c'est pas évident.
Sinon, l'idée pour que l'instance Internet Explorer_Server soit toujours la 1, ce serait de créer une GUI avec ton browser embarqué, comme ça plus de barres d'outils...
Sinon, l'idée pour que l'instance Internet Explorer_Server soit toujours la 1, ce serait de créer une GUI avec ton browser embarqué, comme ça plus de barres d'outils...
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
Izarra4autoit
- Niveau 2

- Messages : 17
- Enregistré le : mar. 21 mai 2013 16:08
- Status : Hors ligne
Re: [..] Aide pour fixer le MouseMove (Control/Position)
Bonsoir,
merci à vous deux!
effectivement, c'est du pur Java
et c'est vraiment pas évident
je vais regarder le dernier script pour voir comment je pourrai embarquer tout sans barre de taches
et d'ici qq jours, en fonction de mes réponses, je fermerai le post
merci encore
cg:)
merci à vous deux!
effectivement, c'est du pur Java
et c'est vraiment pas évident
je vais regarder le dernier script pour voir comment je pourrai embarquer tout sans barre de taches
et d'ici qq jours, en fonction de mes réponses, je fermerai le post
merci encore
cg:)

