[..] Problème WinActivate()

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Marvo
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 31 janv. 2015 04:25
Status : Hors ligne

[..] Problème WinActivate()

#1

Message par Marvo »

Bonjour a tous !

Alors je viens vers vous car j'ai un problème avec la fonction WinActivate() et que j'ai eu beau chercher un peu partout, pas moyen de trouver une solution valable :/

Je bosse sur un script pour pouvoir connecter tous mes comptes dofus a la bonne taille et au bon endroit pour multicomptes sans m'embeter a tout replacer/dimensionner a chaque fois ^^

Tout semble fonctionner a part l'impossibilité d'activer les fenetres une par une pour connecter mes comptes, Je tourne sous win7 64bits ( je suis pas sur mais il y a peu être un problème avec ca )

PS: J'ai fait ca vite fait étant donné que c'est un de mes tous premiers scripts Autoit :)
► Afficher le texte
En espérant que certains sauront !
Bonne journée
Modifié en dernier par Marvo le sam. 31 janv. 2015 13:27, modifié 1 fois.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Problème WinActivate() :)

#2

Message par blacksoul305 »

Bonjour,

en général les automates de jeu ne sont pas tolérés, donc je me demande si ton sujet va rester ouvert. Cela dit, ZDS a déjà travaillé sur un projet pour Dofus en AutoIt. Le lien est ici.

EDIT : évite le smiley dans le titre et surtout mets un spoiler pour ton code car ce dernier est un peu long, merci !
Étudiant en 2ème année de Licence Informatique.
Marvo
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 31 janv. 2015 04:25
Status : Hors ligne

Re: [..] Problème WinActivate()

#3

Message par Marvo »

Bonjour !

J'ai modifié comme tu m'as conseillé, merci, pour le coup des bots j'ai lu les règles oui mais je me disais que vu que je m’arrêtè a la simple connexion, je ne sais pas si ca peut s'assimiler a une aide en jeu

Après ma question est surtout en général au niveau de la fonction WinActivate, ça m’embête de pas pouvoir l'utiliser que ce soit pour ce script ou un autre !
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Problème WinActivate()

#4

Message par blacksoul305 »

Re bonjour,

je te suggère de faire plusieurs tests pour voir quels sont les retours de tes fonctions. En l’occurrence, mettre ton WinActivate dans une variable pour voir si pour lui, il y est arrivé ou pas, et cela avec toutes les fonctions, histoire d'avoir quelques indices sur une solution possible.
D'un autre côté, puisqu'il s'agit d'un jeu, il se peut que certaines mesures ont été prises ce qui pourrait rendre la tâche un peu plus complexe.
Et enfin, je pense qu'il serait plus sûr de travailler avec le handle plutôt qu'avec le titre d'une fenêtre.
Se référer à Control Viewer ou WinGetHandle.

Bon courage !
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème WinActivate()

#5

Message par mikell »

Code : Tout sélectionner

WinActivate($Slot[$Cpt-1])
WinActivate ne marche pas avec un PID, il faut le titre (ou bien mieux le handle, ça évite des confusions) de la fenêtre
http://www.autoitscript.fr/forum/viewto ... =21&t=5411
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Marvo
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 31 janv. 2015 04:25
Status : Hors ligne

Re: [..] Problème WinActivate()

#6

Message par Marvo »

Ah ok je vois ! J'ai regardé avec control viewer et les résultats étaient bons mais ils correspondaient au PID mais comme ca ne semble pas marcher pour WinActivate, j'avais beau chercher ^^

J'imagine qu'il n'y a pas de moyen direct de récupérer le handle de la fenêtre directement lors du run ? Parce que je ne peux pas utiliser le WinGetHandle a cause du fait que j'ai 4 fenêtres avec le même nom !

Si je n'en trouve pas je vais devoir convertir le PID j'imagine, merci pour le bout de code :)
Modifié en dernier par Marvo le sam. 31 janv. 2015 19:44, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Problème WinActivate()

#7

Message par jguinch »

J'avais bricolé un truc il y a quelques temps, tu peux essayer :
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Problème WinActivate()

#8

Message par blacksoul305 »

Bonsoir,

en plus de la fonction de jguinch, il pourrait aussi être envisageable de changer le titre des fenêtres avec WinSetTitle, au fur et à mesure que ces dernières apparaissent.
Étudiant en 2ème année de Licence Informatique.
Marvo
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 31 janv. 2015 04:25
Status : Hors ligne

Re: [..] Problème WinActivate()

#9

Message par Marvo »

Ah oui c'est pas bête de WinSetTitle juste après le run ! Ça parait moins lourd que la fonction de jguinch vu que je peux juste utiliser WinActive derrière ^^ Je vais essayer ça je vous tiens au courant
Marvo
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 31 janv. 2015 04:25
Status : Hors ligne

Re: [..] Problème WinActivate()

#10

Message par Marvo »

Me voilà revenu avec une nouvelle version du code !

J'ai étudié un peu vos solutions et j'ai choisi de WinWait la fenêtre "Dofus" juste après son run pour récupérer le handle, et d'ensuite la WinSetTitle pour la différencier des fenêtres a venir (a savoir que ça marche avec 4 mais il est possible qu'avec plus ça plante car les fenêtre se remettent a s’appeler "Dofus" quand on est arrivé a l'écran de connexion, mais bon)

Du coup j'arrive bien a activer chaque fenêtre un peu comme je veux pour rentrer les logs, même si j'ai maintenant un bug étrange ^^ Quand je connecte entre 2 et 4 comptes, le dernier ne fait aucun des Send de connexion ... J'ai rajouté WinClose pour tester, et il le fait bien partout du coup il active bien chaque fenêtre même la dernière, elle refuse juste les send ! (pour un seul compte ca marche très bien sinon ...)
► Afficher le texte
Clampu
Niveau 3
Niveau 3
Messages : 48
Enregistré le : mer. 16 mai 2012 22:08
Status : Hors ligne

Re: [..] Problème WinActivate()

#11

Message par Clampu »

J'ai pas mal utilisé le naio, et tu as des fonctionnalités que tu pourrais réutilisé. De mémoire, il est possible d'attribué des raccourci aux différents comptes (lesquels ont leurs fenêtres renommées), pour switcher de l'un à l'autre (comme ce que tu sembles vouloir faire avec ton WinActivate). Je te conseils de te pencher sur le code du naio (libre), cela devrait t'apporter plusieurs réponses.

Concernant la limite bot/non bot, Ankama (éditeur de Dofus) accepte toute forme d'automatisation qui s'effectue hors du jeu (le naio qui est autorisé par Ankama). Il est par conséquent considéré comme bot un programme qui irait plus loin que l'authentification et la manipulation de fenêtres (par exemple choisir un personnage sur le compte, lancer un sort, fabriquer un objet ...). La connexion automatique ou une aide pour sélectionner la bonne fenêtre via un raccourci est "hors du jeu" et donc autorisé (cela n'aide finalement en rien le joueur à mieux jouer/tricher).

Pour ton dernier problème, regarde dans la naio quelles vérifications sont faites avant le send du log/mdp (du genre winwaitactive ou autre).
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Problème WinActivate()

#12

Message par jguinch »

Il faut utiliser les fonctions ControlXXX au lieu de Send qui sera bancal comme pas possible.
Et au lieu des titres de fenêtres, ce serait plus judicieux de passer par le handle.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre