[R] AutoIt et la reconnaissance de caractère..

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
erotomania
Niveau 1
Niveau 1
Messages : 3
Enregistré le : jeu. 17 avr. 2008 00:49
Status : Hors ligne

[R] AutoIt et la reconnaissance de caractère..

#1

Message par erotomania »

Bonjour, je suis nouveau dans la communauté AutoIt et j'aimerais savoir si il y a une fonction pour reconnaitre les caractères ?
Je m'explique :

J'ai un site web qui génère des numéros, et j'aimerais faire un script AutoIt qui puisse "copier" ce numéro en mémoire, et ensuite extraire le mot correspondant à ce numéro dans une base de donné du style "numéro : mot" afin d'afficher ce mot à l'écran.
Croyez vous que cela soit possible ?

Info complémentaire, je n'ai pas accés au code source du site en question donc il faudrait une fonction qui copie/colle le numéro :/

Merci de votre aide !
Max5
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 11 sept. 2007 19:20
Status : Hors ligne

Re: [..] AutoIt et la reconnaissance de caractère..

#2

Message par Max5 »

Ça serait plus facile de te répondre en connaissant le "site en question", mais a priori, pour récupérer ton numéro, tu devrais te tourner vers les expressions régulières.
erotomania
Niveau 1
Niveau 1
Messages : 3
Enregistré le : jeu. 17 avr. 2008 00:49
Status : Hors ligne

Re: [..] AutoIt et la reconnaissance de caractère..

#3

Message par erotomania »

Bonjour,

Merci de m'avoir répondu !
Je vais essayer de me tourner vers les expressions régulières mais je pense que c'est trop complexe pour ce que je veux faire, je vais plutôt faire un truc simple du genre déplacement de souris jusqu'au numéro généré, mise en subrillance, copier/coller le numéro en variable. Je pense pouvoir être capable de m'occuper de cette partie mais vient ensuite la partie où AutoIt doit aller chercher dans une base de donné afin de coller la chaine de caractère correspondant au numéro dans un champ de recherche se trouvant sur la même page, et je ne sais pas si AutoIt peut gerer ce genre de chose :/
Max5
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 11 sept. 2007 19:20
Status : Hors ligne

Re: [..] AutoIt et la reconnaissance de caractère..

#4

Message par Max5 »

erotomania a écrit :mais vient ensuite la partie où AutoIt doit aller chercher dans une base de donné afin de coller la chaine de caractère correspondant au numéro dans un champ de recherche se trouvant sur la même page, et je ne sais pas si AutoIt peut gerer ce genre de chose :/
Si tu n'es pas le webmaster, pas plus AutoIt qu'un autre langage ne te permettra d'accéder a la base de donné d'un site. ;)
Sinon c'est illégale. ^^
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

Re: [..] AutoIt et la reconnaissance de caractère..

#5

Message par arrkhan »

Plop,

si tu n'est pas anglophobe, j'avais trouvé quelques topics sur les "OCR" sous autoit sur le site angliche:
http://www.autoitscript.com/forum/index ... ntry455611

Non testé, mais j'espere que ca pourra te convenir
erotomania
Niveau 1
Niveau 1
Messages : 3
Enregistré le : jeu. 17 avr. 2008 00:49
Status : Hors ligne

Re: [..] AutoIt et la reconnaissance de caractère..

#6

Message par erotomania »

Merci je vais regarder ça :)

Ps : Je ne veux pas acceder à la base de données du dit site mais à ma propre "base de données" qui pourrait très bien être un fichier.txt de la forme

1 : aaa
2 : bbb
3 : ccc

En fait j'aimerais faire un code qui copie le numéro 2 (par exemple), qui cherche le mot correspondant dans ce fichier (ici le mot est bbb) et qui me recrache ce mot dans une zone où on peut copier du texte :)
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

Re: [..] AutoIt et la reconnaissance de caractère..

#7

Message par arrkhan »

et pourquoi ne pas le mettre dans le presse papier avec ClipPut($var)
x0r
Niveau 2
Niveau 2
Messages : 23
Enregistré le : jeu. 17 avr. 2008 16:57
Status : Hors ligne

Re: [..] AutoIt et la reconnaissance de caractère..

#8

Message par x0r »

Bonjour à tous et à toutes, je me permet de poster ici car ma question concerne aussi la reconnaissance de caractères.

Voilà, j'aimerai savoir si il est possible dans AutoIt de faire l'équivalent d'un "like" comme sql.
J'aimerai, si c'est bel et bien possible, utiliser cette fonctionnalité pour ne plus avoir à renseigner le nom d'une fenêtre, notamment dans un "WinWaitActive()" ou autre.

Par exemple le code suivant lance notepad, et si la fenêtre portant son nom existe, il m'ouvre une boîte de dialogue.
J'aimerai, à la place du titre complet (Sans titre - Bloc-notes), soit mettre une variable qui détecte le titre automatiquement, soit qu'il reconnaisse le titre à partir de quelques lettre ( comme "Sans titre").

Code : Tout sélectionner

$title="Sans titre - Bloc-notes"
run ("notepad")
If WinExists ($title) Then
    msgbox ("0", "Test", "Réussi")
EndIf
J'ai découvert AutoIt il y a quelques jours seulement, j'ai pourtant regardé toutes les fonctions disponibles, mais je n'ai pas trouvé.


Merci à vous.
Avatar du membre
tofu
Niveau 3
Niveau 3
Messages : 30
Enregistré le : mar. 15 avr. 2008 14:48
Status : Hors ligne

Re: [..] AutoIt et la reconnaissance de caractère..

#9

Message par tofu »

Bonjour,

Pour répondre à ta question x0r, la fonction WinGetTitle() permet de matcher une fenêtre grâce à son titre sans forcément devoir donner le titre entier.
WinGetTitle ( "title" [, "text"] )
Pour reprendre ton exemple, avec quelques modifications cela donne :

Code : Tout sélectionner

$title="Sans titre -" ; On prend un morceau du titre recherché
run ("notepad") ; On lance notre application pour tester

WinWaitActive($title) ; On demande d'attendre que la fenêtre soit active

$titreComplet = WinGetTitle($title,"") ; On récupère le titre complet

ConsoleWrite($titreComplet & @CRLF) ; On affiche le titre complet pour vérification

If WinExists ($titreComplet) Then ; Si la fenêtre existe on affiche la messagebox
    msgbox ("0", "Test", "Réussi")
EndIf
En espérant que cela réponde correctement à ton attente.

Cordialement,
L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
x0r
Niveau 2
Niveau 2
Messages : 23
Enregistré le : jeu. 17 avr. 2008 16:57
Status : Hors ligne

Re: [..] AutoIt et la reconnaissance de caractère..

#10

Message par x0r »

Bonjour et merci pour la réponse rapide ^^, est-ce que cela répond à ma question, à vrai dire, oui et non.
Effectivement j'avais repéré cette fonction ' WinGetTitle ( "title" [, "text"] ) ', mais j'aurai quelques question sur la solution que vous me proposez:

Code : Tout sélectionner

$title="Sans titre -" ; On prend un morceau du titre recherché
run ("notepad") ; On lance notre application pour tester

WinWaitActive($title) ; On demande d'attendre que la fenêtre soit active

$titreComplet = WinGetTitle($title,"") ; On récupère le titre complet

ConsoleWrite($titreComplet & @CRLF) ; On affiche le titre complet pour vérification

If WinExists ($titreComplet) Then ; Si la fenêtre existe on affiche la messagebox
    msgbox ("0", "Test", "Réussi")
EndIf
WinWaitActive($title)
On demande donc d'attendre la fenêtre qui porte le nom "$title", en l'occurence : "Sans titre -"
Mais aucune fenêtre ne porte ce nom, puisque le nom exacte est "Sans titre - Bloc-notes"; ce qui veut dire qu'AutoIt analyse déjà les fenêtre commencant par "Sans titre -" ?
Et dans ce cas, quel est l'intérêt de la variable "$titreComplet" ?

Le programme que j'ai fournis dans le post initial, est la à titre d'exemple, juste pour que ma question soit rapidement comprise, mais en fait j'aimerai appliquer cela à un autre script.
Et chose étrange, sur l'autre script, il ne reconnait pas le nom de la fenêtre.

P.S : ce sont de simples question de pure débutant, je ne suis évidemment pas en train de critiquer votre solution ^^
Peut-être devrai-je créer un autre post qui concerne mon script?
Avatar du membre
tofu
Niveau 3
Niveau 3
Messages : 30
Enregistré le : mar. 15 avr. 2008 14:48
Status : Hors ligne

Re: [..] AutoIt et la reconnaissance de caractère..

#11

Message par tofu »

En réalité, la variable $titreComplet n'a aucune utilité propre si ce n'est d'arriver à récupérer le titre complet à partir d'une partie de titre. C'était juste à titre d'exemple, dans le concret c'est le WinWaitActive() qui va permettre à ta condition de pouvoir détecter grâce à WinExists() si la fenêtre existe bel et bien.

Cependant, selon, le contexte il peut être intéressant de récupérer le titre complet pour la suite des actions (je pense notamment à une gestion "multi-fenêtres" avec des titres assez similaires du genre:

Application - Configuration
Application - A propos
et un autre soft lancé en même temps donc certaines fenêtres auraient comme titre
unSoft - A propos
unSoft - Configuration
etc.)

Il est vrai que je me suis permis d'élargir un peu le scope histoire de proposer une solution qui peut servir dans des cas plus génériques. Dans le cas de ta demande précis, c'est surtout le WinWaitActive() qui permet d'attendre que la fenêtre soit crée avant de vérifier la condition qui est utile.
L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre