[...] ControlSend

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Xavier59
Niveau 3
Niveau 3
Messages : 32
Enregistré le : dim. 27 oct. 2013 14:03
Status : Hors ligne

[...] ControlSend

#1

Message par Xavier59 »

Bonjour,

J'aurais besoin d'un petit coup de main pour le CtrlSend.
Prenons par exemple Google. Si je veut écrire dans l'input box pour rechercher "Hello World"

Pour débuter, voilà ce que j'ai :

Code : Tout sélectionner

$ui = GUICreate("Google Message", 600, 500) ; on créer la GUI
$btn = GUICtrlCreateButton("Start", 180, 10, 210, 25) ; on créer un bouton pour enregistrer un fichier
$wb = _IECreateEmbedded() ; on appel le navigateur embarqué
GUICtrlCreateObj($wb, 10, 40, 580, 450) ; on le met en place ici
GUISetState() ; on montre la GUI

_IENavigate($wb, "http://google.fr", 1) ; l'adresse

While 1
    Switch GUIGetMsg() 
        Case $btn ; si on clique sur le bouton démarrer
               Call("Start")
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func Start()
   _IENavigate($wb,$Serveur,1) ;adresse du serveur
   $handle = ControlGetHandle("Google", "", "[CLASS:CompositorHostWindowClass; INSTANCE:1]")
    Sleep(500)
   
 
Bon, voilà le début. Après, je ne voudrais pas voir la souris bouger, et je ne sais pas comment faire pour récupérer le code pour écrire directement dans l'inputbox de google :/

De plus, j'ai aussi essayé avec la souris, mais ça ne marche déjà, même pas !

Code : Tout sélectionner

   ControlSend("Google","",$handle,"Hello World !")
   Sleep(1000)

EndFunc
Merci d'avance.
Modifié en dernier par Xavier59 le dim. 27 oct. 2013 17:40, modifié 2 fois.
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: CtrlSend

#2

Message par parazitenew »

Pour faire une recherche sur google le plus judicieux c'est d'ouvrir ce lien:

https://www.google.fr/#q=(là tu mets tes mots clés)

Le CtrlSend ne fonctionne pas avec tout et n'importe quoi, sur quoi veux tu réellement l'utiliser ?

Edit: t'as oublié de mettre la balise [..] dans le titre de ton sujet
Xavier59
Niveau 3
Niveau 3
Messages : 32
Enregistré le : dim. 27 oct. 2013 14:03
Status : Hors ligne

Re: CtrlSend

#3

Message par Xavier59 »

parazitenew a écrit :Pour faire une recherche sur google le plus judicieux c'est d'ouvrir ce lien:

https://www.google.fr/#q=(là tu mets tes mots clés)

Le CtrlSend ne fonctionne pas avec tout et n'importe quoi, sur quoi veux tu réellement l'utiliser ?

Edit: t'as oublié de mettre la balise [..] dans le titre de ton sujet
Ben, le script va ouvrir une page Internet dans la GUI même.
La, ce n'était qu'un exemple pour google. J'ai pris google mais c'est de même pour n'importe quelle site.
Le CtrlSend devra marcher sur du Flash.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: CtrlSend

#4

Message par TT22 »

parazitenew a écrit :Edit: t'as oublié de mettre la balise [..] dans le titre de ton sujet
Tu devrais mettre à jour le titre de ton sujet si tu ne veux pas qu'il finisse à la poubelle !
Cordialement,
TT22
Xavier59
Niveau 3
Niveau 3
Messages : 32
Enregistré le : dim. 27 oct. 2013 14:03
Status : Hors ligne

Re: [ControlSend]

#5

Message par Xavier59 »

Bon, je suis un peu triste :(
Ce que je voulais, c'est que la fenetre puisse faire des actions sans être ouverte .
Mais, après quelque test, le ControlSend marche bien, mais, la fenêtre doit être active pour cela ...
Si elle minimiser, ça ne marche pas .
Quelqun aurait t'il un solution a me proposer ?
Merci.
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [...]ControlSend

#6

Message par parazitenew »

Pour remplir des input dans une page web il faut les capter avec leur ID ou avec leur nom.

_IEGetObjById() ou _IEGetObjByName(), le nom ou l'id de l'input se trouve dans le code source de la page web.

Pour y mettre une valeur, tu dois utiliser la fonction:

_IEFormElementSetValue ()
Xavier59
Niveau 3
Niveau 3
Messages : 32
Enregistré le : dim. 27 oct. 2013 14:03
Status : Hors ligne

Re: [...] ControlSend

#7

Message par Xavier59 »

Après beaucoup de travail, sa ne donne rien ...
Je ne sais pas pourquoi mais ça ne marche pas.
Les ControlMouse etc n'ont aucun effet.
Bref, j'abandonne.
Je met tout de même mon script ici, au cas ou cela aiderait quelqun.
Bonne journée.

Code : Tout sélectionner

#include <GUIConstants.au3>
#include <IE.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include 'misc.au3'
#include <SliderConstants.au3>
#include <INet.au3>
#include <File.au3>
#include <Date.au3>
#include <Array.au3>
#include <GUIListBox.au3>
#include <WinAPI.au3>


Func order($a, $b)
    Dim $res[2]
    If $a < $b Then
        $res[0] = $a
        $res[1] = $b - $a
    Else
        $res[0] = $b
        $res[1] = $a - $b
    EndIf
    Return $res
 EndFunc
 
$Serveur = InputBox("Serveur","Please, write serveur adress")

$Height = @DesktopHeight
$Width = @DesktopWidth

$Height = $Height/2.3
$Width = $Width/2.4

$ui = GUICreate("Darkobit",500,600,-1,-1) ; on créer la GUI
$btn = GUICtrlCreateButton("Start", 180, 10, 210, 25) ; on créer un bouton pour enregistrer un fichier
$wb = _IECreateEmbedded() ; on appel le navigateur embarqué
GUICtrlCreateObj($wb, 10, 40, 580, 450) ; on le met en place ici
GUISetState() ; on montre la GUI

_IENavigate($wb, "http://darkorbit.com", 1) ; l'adresse

While 1
    Switch GUIGetMsg() 
        Case $btn ; si on clique sur le bouton démarrer
               Call("Start")
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func Start()
   _IENavigate($wb,$Serveur,1) ;adresse du serveur
   Global $handle = ControlGetHandle("Darkobit", "", "[CLASS:Internet Explorer_Server; INSTANCE:1]")
   Msgbox(4096,"Start","Start Botting")
   


Sleep(1000)

MsgBox(4096, "Select", "Please select killers area ( WARNING : Don't put the little map in the killers area !!)")
    Local $selected = 0
    Global $coordinate[4]
    $area = GUICreate("", 1, 1, 1, 1, $ws_popup, $ws_ex_topmost)
    GUISetBkColor(3407616, $area)
    WinSetTrans($area, "", 80)
    GUISetState()
    While $selected = 0
        If _ispressed("1") Then
            $mp = MouseGetPos()
            WinMove($area, "", $mp[0], $mp[1], 1, 1)
            While _ispressed("01")
                $pos = MouseGetPos()
                Global $lefts = order($mp[0], $pos[0])
                Global $tops = order($mp[1], $pos[1])
                WinMove($area, "", $lefts[0], $tops[0], $lefts[1], $tops[1])
                ConsoleWrite($lefts[0] & ", " & $tops[0] & ", " & $lefts[1] & ", " & $tops[1] & @CRLF)
            WEnd
            $coordinate[0] = $lefts[0]
            $coordinate[1] = $tops[0]
            $coordinate[2] = $lefts[0] + $lefts[1]
            $coordinate[3] = $tops[0] + $tops[1]
            $selected = 1
        EndIf
    WEnd
    GUIDelete($area)
    
MsgBox(4096, "Select", "Please select the minimap")
    Local $selected = 0
    Global $coordinatemap[4]
    $area = GUICreate("", 1, 1, 1, 1, $ws_popup, $ws_ex_topmost)
    GUISetBkColor(3407616, $area)
    WinSetTrans($area, "", 80)
    GUISetState()
    While $selected = 0
        If _ispressed("1") Then
            $mp = MouseGetPos()
            WinMove($area, "", $mp[0], $mp[1], 1, 1)
            While _ispressed("01")
                $pos = MouseGetPos()
                Global $lefts = order($mp[0], $pos[0])
                Global $tops = order($mp[1], $pos[1])
                WinMove($area, "", $lefts[0], $tops[0], $lefts[1], $tops[1])
                ConsoleWrite($lefts[0] & ", " & $tops[0] & ", " & $lefts[1] & ", " & $tops[1] & @CRLF)
            WEnd
            $coordinatemap[0] = $lefts[0]
            $coordinatemap[1] = $tops[0]
            $coordinatemap[2] = $lefts[0] + $lefts[1]
            $coordinatemap[3] = $tops[0] + $tops[1]
            $selected = 1
        EndIf
    WEnd
    GUIDelete($area)
    
Call("Kill")
EndFunc
    
    
Func Kill() 
    $a = 0
    $i = 0
    $time = 0
    Local $x = Random($coordinate[0], $coordinate[2])
                    Local $y = Random($coordinate[1], $coordinate[3])
                    ControlClick("Darkobit","",$handle,"left",1,$x,$y)
    While 1
        $during = 20
        While 1
            $coord = PixelSearch($coordinate[0], $coordinate[1]+60, $coordinate[2], $coordinate[3], 13369344, 5)
            If NOT @error Then
                PixelSearch($coord[0], $coord[1], $coord[0] + 40, $coord[1] - 60, 7122410, 15)
                If NOT @error Then
                    Local $x = Random($coordinate[0], $coordinate[2])
                    Local $y = Random($coordinate[1], $coordinate[3])
                    ControlClick("Darkobit","",$handle,"left",1,$x,$y)
         
                    Call("Kill")
                EndIf
                PixelSearch($coordinate[0], $coordinate[1], $coordinate[2], $coordinate[3], 11933696, 15)
                If @error Then
                    $i = 1
                Else
                    $i = 0
                EndIf
                ControlClick("Darkobit","",$handle,"left",1,$coord[0] + 5,$coord[1] - 60)
                Sleep(500)
                
                ControlSend("Darkobit","",$handle,"{LCTRL}")

                $coord = PixelSearch($coordinate[0], $coordinate[1], $coordinate[2], $coordinate[3], 11933696, 5)
                If NOT @error Then
                    $coord = PixelSearch($coordinate[0], $coordinate[1], $coordinate[2], $coordinate[3], 0)
                    
                    
                    ControlMove("Darkobit","",$handle,$coord[0],$coord[1])
                    
                    MouseDown("left")
                    $coord = PixelSearch($coordinate[0], $coordinate[1], $coordinate[2], $coordinate[3], 11933696, 15)
                EndIf
                While 1

                    $coord = PixelSearch($coordinate[0], $coordinate[1], $coordinate[2], $coordinate[3], 11933696,15)
                    If NOT @error Then
                        ControlMove("Darkobit","",$handle,$coord[0]+10,$coord[1]+10)
                        $i = $i + 1
                     Else
                        MouseUp("left")
                        $r = 0
                        $time = 24
                        Sleep(100)
                        
                        ExitLoop 
                    EndIf
                WEnd
                ControlSend("Darkobit","",$handle,"1")
            Else
                $during = 20
                ExitLoop 
            EndIf
        WEnd
        
        $time = $time + 1
        If $during = 20 Then
            $coord2 = PixelSearch($coordinatemap[0], $coordinatemap[1], $coordinatemap[2], $coordinatemap[3], 16711680, 70)
            If NOT @error Then
                ControlClick("Darkobit","",$handle,"left",1,$coord2[0],$coord2[1])
                Sleep(2000)
                $during = 20
                $time = 24
            Elseif $time = 25 Then
                $during = 20
                $time = 0
                Local $x = Random($coordinatemap[0], $coordinatemap[2])
                Local $y = Random($coordinatemap[1], $coordinatemap[3])
                ControlClick("Darkobit","",$handle,"left",1,$x,$y)
              Mouseclick("left",$x,$y)
                 
      
             EndIf
             While 1
                    $i = $i + 1
                    
                    Sleep(80)
                    If $i = 45 Then
                        ExitLoop 
                    EndIf
                WEnd
                $i = 0
            EndIf
    WEnd
 EndFunc
Xavier59
Niveau 3
Niveau 3
Messages : 32
Enregistré le : dim. 27 oct. 2013 14:03
Status : Hors ligne

Re: [...] ControlSend

#8

Message par Xavier59 »

Bon.
J'ai compris pourquoi ça ne marchais pas.
Le ControlSend etc n'est pas compatible avec le flash. J'ai testé avec des pages fixes et la, ça marche !
Auriez vous une solution à me proposer en autoit pour faire cela ? J'ai appris qu'on pouvait faire ça en java mais bon, ce n'est plus le même niveau :lol:
Répondre