Pourquoi vouloir rechercher un caractère ? Sans oublier qu'il est TOUT à fait possible de le faire en Autoit, très hardu, mais faisable ...
Bref, j'ai rechercher dans mes archives et ceci devrai vous convenir;
Cliquez pour révéler
Cliquez pour masquer
#cs ----------------------------------------------------------------------------
AutoIt Version : 3.3.6.0
Auteur: Pandi_Panda
Fonction du Script :
# _Chat_Capt_String($fenetre,$x,$y); permet de recuperer le texte du chat Do.fus, de la fenetre voulue ; $_Do_fus_Chat_String contient le texte
@PARAM:
> $fenetre = le nom de la fenetre, le meme que le nom du Personnage
> $x,$y = les position en x et y du chat (ou l'on voit les message défilé)
@ERROR:
> @ERROR=1 ; fenetre pas trouvée
# _Send_To_Do_fus($fenetre,$str="",$chat=true); envoi sur le chat do.fus, le string mit !
@DESCRIPTION:
> permet d'envoyer une phrase/mot à un chat de dofus, sans avoir la fenetre active (ctrlSend())
> permet de gerer l'envoi de touche clavier. [ouvrir inventaire, sort, ...]
> Problème actuel, l'envoi de ctrl^w,ctrl^c,ctr^a ne fonctionne pas. il faut passer par un "Send()".
> changer le raccourci ctrl^w par ["p" par exemple], permet de passer le tour, sans que la fenêtre soit "active"
@PARAM
> $fenetre = le nom de votre personnage ou fenetre de Dofus.
> $str = le mot / la phrase a envoyer
> $chat, pour si taper dans le chat ou pas ! [si false => exemple : 'i' ouvre l'inventaire]
@ERROR:
> @ERROR=1 ; erreur parametre
> @ERROR=2 ; pas trouver de fenetre
#ce ----------------------------------------------------------------------------
#include-once
Global $_Do_fus_Chat_String=""
Local $nom_Perso_Egal_Nom_Fenetre="VotreNomDePersoCaseComprise"
Local $phraseEnvoi="kikouuuu"
WinActivate($nom_Perso_Egal_Nom_Fenetre)
Sleep(500)
WinMove($nom_Perso_Egal_Nom_Fenetre,"",0,0,500,500) ; on met en haut a gauche en 0,0 [optionnel]
_Send_To_Do_fus($nom_Perso_Egal_Nom_Fenetre,$phraseEnvoi,True) ; envoi "kikouuuu"
Sleep(500); pour attendre qu'il envoi ;)
If Not @error Then
_Chat_Capt_String($nom_Perso_Egal_Nom_Fenetre,160,428) ; permet de recuperer les String(s) du Chat[$x,$y sont les positions ou click au chat]
MsgBox(0,'',$_Do_fus_Chat_String)
Else
MsgBox(0,"","erreur, fenetre ou nom de fenetre incorrecte !")
EndIf
Func _Chat_Capt_String($fenetre,$x,$y)
If WinExists($fenetre) Then
If WinActive($fenetre) Then
;~ MouseClick("left",527,707,1,0); rendre actif le "chat pour selectionner"
MouseClick("left",$x,$y,1,0); rendre actif le "chat pour selectionner"
Send("^a"); tout selectionner
Send("^c"); copier
$_Do_fus_Chat_String=ClipGet(); on recupere les infos du chat
_Send_To_Do_fus($fenetre,"",True); pour eviter d'avoir tout en "surligner", simule un "{enter}" avec envoi de ""
Else
WinActivate($fenetre)
_Chat_Capt_String($fenetre,$x,$y) ; recuservité
EndIf
Else
SetError(1)
EndIf
EndFunc
Func _Send_To_Do_fus($fenetre,$str="",$chat=True)
If IsString($fenetre) And IsString($str) And IsBool($chat) Then; verifie les parametre bien initialiser
Local $error
If $chat Then
$error=ControlSend($fenetre,"","","{ENTER}",0)
If $error <> 0 Then ; si on a trouver la fenetre
Sleep(50)
ControlSend($fenetre,"","",$str,1)
ControlSend($fenetre,"","","{ENTER}",0)
Else
Return SetError(2,0,False); erreur nom de la fenetre.
EndIf
Else
$error=ControlSend($fenetre,"","",$str,0)
If $error=0 Then Return SetError(2,0,False); FENETRE PAS TROUVEE
EndIf
Else
return SetError(1,0,False); ERREUR VARIABLE.
EndIf
EndFunc
Edit: ajout des commentaire pour les fonctions :p