Page 1 sur 1

[R] Detection de fenêtre "polymorphe"

Posté : ven. 30 avr. 2010 10:16
par Pelagos
Bonjour.

Toujours avec mon robot, j'ai un dernier petit problème. Comment détecter une fenètre qui peut poper a n'importe quel moment, mais surtout qui n'a pas de nom, et dont le texte et les dimensions changent a chaque fois ! Cette fenêtre étant extremement rare, je n'ai pas reussi a provoquer son apparition pour essayer de chopper un paramètre pour la cibler via AWI.

Y a t'il, en gros, un moyen de dire "IF n'importe quoi d'autre s'ouvre, THAN ..." ?
J'ai pensé utiliser la fonction winList en AdlibRegister, mais ma fenetre n'a pas de titre...
La fenetre en question est, bien sur un message d'erreur.
J'ai reussi a gerer les erreur "routinières" du prototype, mais celle la...

Merci d'avance.

Re: [...] Detection de fenêtre "polymorphe"

Posté : ven. 30 avr. 2010 21:35
par Tlem
Si cette fenêtre n'a aucun élément qui reste identique, il va être difficile de la repérer.

Le fait qu'elle n'ai pas de titre est une chose, mais cela peut être un point de repère comme un autre, par contre, il vous faudra un ou plusieurs autres éléments comme point de repère.

Regardez si un mot du texte, le style ou tout autre élément peut être un point de repère, sans cela vous n'aurez pas grand chose pour vous aider ...
Peut être (a vérifier), si cette fenêtre apparait aléatoirement, mais qu'elle a le focus, vous pouvez considérer que :
Toute fenêtre sans titre qui apparait en premier plan et qui correspond à tel ou tel point de repère comme le style par exemple sera considérée comme la fenêtre à traiter.
Mais attention, cela peut mener à bien des dysfonctionnement si plus d'une fenêtre correspond à ceci.

Re: [...] Detection de fenêtre "polymorphe"

Posté : lun. 03 mai 2010 11:06
par Pelagos
Malheureusement je peux pas le gérer comme ça. La procedure du prototype inclue de nombreuses apparitions de fenètres, je peux pas lui dire ça, d'autant plus que beaucoup n'ont pas de titre (comme c'est un prototype, le logiciel a été programmé par un étudiant qui ne c'est pas fait c.... a nommer les fenètres).

La fenetre est un message d'erreur sans titre. Sa taille depends de l'erreur en question, qui peut etre pas mal de truc. L'ordinateur est en allemand, et une fois sur deux le message d'erreur est en Allemand, donc pour repérer des similitudes de mot c'est pas evident... Pour une raison que je ne comprends pas, le texte des fenetres n'est de toute manière jamais reconnu par AWI. Peut etre un probleme de Labview...

Est ce que se serait pas possible de gerer comme ca : fonction WinGetHandle de toute les fenetres utiles, et inclure un truc du genre "Si une nouvelle fenetre pope, lit le handle. Si le handle colle pas avec la liste de handle, Then ..." ? Par contre je vois pas trop comment coder un truc comme ça.

Re: [...] Detection de fenêtre "polymorphe"

Posté : lun. 03 mai 2010 11:58
par scorp84
Bonjour Pelagos,

Si tu ne peux pas te baser sur le titre, le contenu du message d'erreur a-t-il un texte commun (ex : violation d'accès ou autre) ?

Si c'est le cas, tu peux peut être essayer ça :

Code : Tout sélectionner

WinWait("","Violation d'accès",250)
 
Je vais essayer de faire des tests voir si Autoit l'accepte.

Amicalement.

BM

Re: [...] Detection de fenêtre "polymorphe"

Posté : lun. 03 mai 2010 12:56
par Pelagos
Hum. J'avais essayer de faire un truc similaire avec le premier type d'erreur du logiciel. Celui la étant "fixe", il etait plus facile a résoudre. La detection de texte ne marchait pas, AWI ne detectait aucun texte (alors que bien sur, il existait.). Je pense que la gestion de fenetre de Labview est le probleme, toutefois, la fenetre avait toujours la meme taille, donc j'ai utilisé ce paramètre.

Dans le second cas le texte varie, en fonction du type d'erreur, et donc la taille de la fenetre. Sur il y a toujours le mot "erreur" dans la fenêtre (encore que suivant les changements de langue, pas toujours, mais très souvent diront nous) , mais je ne pense pas que ça va marcher.

Enfin, ca vaut le coup d'essayer, je teste et je te dis.

Merci du coup de main en tout cas.

Re: [...] Detection de fenêtre "polymorphe"

Posté : lun. 03 mai 2010 14:20
par scorp84
Voici un bout de code qui te permettrait de faire un tableau avec les applis qui tournent avec le nombre d'instances :
► Afficher le texte
Si ton nombre d'appli est défini, tu fait tourner ce script quand tu n'as pas ta fenêtre pour le stocker dans un tableau en dur et après tu compares si ton total est différent entre ton tableau fixe et le réel.

C'est un peu tiré par les cheveux mais je ne trouve que ça comme solution pour l'instant pour ton cas :-(

Je continue à chercher.

Amicalement.

BM

Re: [...] Detection de fenêtre "polymorphe"

Posté : lun. 03 mai 2010 15:01
par Pelagos
J'avais envisagé une solution dans le genre, mais j'ai franchement pas le nivear pour programmé un truc du genre. Ben je teste et je te dis.

La detection de mot ne marche pas, c'est officiel.
Merci encore.

Re: [...] Detection de fenêtre "polymorphe"

Posté : lun. 03 mai 2010 15:07
par scorp84
Fais moi un hijackthis (http://www.clubic.com/telecharger-fiche ... kthis.html) de ta machine sur laquelle tourne ton robot et envoie le moi.

J'essayerai de voir si j'arrive à te faire quelque chose.

Amicalement.

BM

Re: [...] Detection de fenêtre "polymorphe"

Posté : lun. 03 mai 2010 16:41
par Pelagos
Désolé, je peux pas faire ça. Je n'ai pas les droits requis sur l'ordi du prototype. L'installation de tout nouveau programme est reglementée au niveau du laboratoire.
Désolé.

Re: [...] Detection de fenêtre "polymorphe"

Posté : lun. 03 mai 2010 20:46
par scorp84
Là, ça devient dur :-(

Là, j'ai plus d'idée, désolé :-(

Amicalement.

BM

Re: [...] Detection de fenêtre "polymorphe"

Posté : lun. 03 mai 2010 23:00
par Tlem
Aux vues du peux de possibilités de points de repères, je propose une dernière solution. ;)

Le but est de surveiller les fenêtres popup et de rechercher si le handle parent
Si le handle parent est l'application en question, alors c'est sans doute la fenêtre du message d'erreur. :wink:

Re: [...] Detection de fenêtre "polymorphe"

Posté : mar. 04 mai 2010 09:51
par Pelagos
Pour Scorp84, merci, c'est pas grave, tu m'as deja bien aidé. L'idée de Tlem est bonne, je vais essayer de combiner ca avec ton script, ca devrai passer. Je teste et je vous tiens au jus.

Re: [...] Detection de fenêtre "polymorphe"

Posté : mer. 05 mai 2010 11:50
par scorp84
Bonjour,

Certains de mes scripts envoient après exécution un rapport par mail.

Dans ce rapport, je fais un tableau des fenêtres ouvertes et pour chacune j'ai l'application parente.

Vu que ta fenêtre est sans nom, peut être peux tu récupérer son handle avec le nom du programme.

Voici le code :
► Afficher le texte
Le bout de code est sûrement perfectible mais j'espère qu'il pourra t'aider.

Amicalement.

BM

Re: [...] Detection de fenêtre "polymorphe"

Posté : ven. 07 mai 2010 21:56
par GMib
Je n'est pas bien compris ce qu'est AWI, mais certaine fenêtre son identifiable grâce a la class (voir AutoIt window info)
WinGetClassList pourrai peu être aider.

Re: [...] Detection de fenêtre "polymorphe"

Posté : dim. 09 mai 2010 22:48
par Tlem
GMib a écrit :Je n'est pas bien compris ce qu'est AWI
GMib a écrit :voir AutoIt Window Info
Image

Re: [...] Detection de fenêtre "polymorphe"

Posté : dim. 09 mai 2010 22:52
par GMib
lol, ben voila, la j'ai compris :)

Re: [...] Detection de fenêtre "polymorphe"

Posté : mer. 12 mai 2010 11:45
par Pelagos
Bien, j'ai résolu le problème avec un "select...case" basé sur une gamme de taille de fenetre et le code de Scorp84. Finalement ça marche assez.
Bref, c'est long et lourd, mais ca marche pas mal. Donc bon.

Merci a tous.

Re: [...] Detection de fenêtre "polymorphe"

Posté : mer. 12 mai 2010 12:31
par Tlem
N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.

Re: [R] Detection de fenêtre "polymorphe"

Posté : lun. 17 mai 2010 09:37
par Pelagos
Done !