Programa para principiantes para controlar los mandos

RoBots_Hard: Electrónica, OCR, WebCams, Reconocimiento de objetos, maquinas
Responder
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Programa para principiantes para controlar los mandos

Mensaje por BasicOs »

Aquí está el código para empezar, muy elemental, aunque se puede generar automáticamente con el grabador de Macros del programa que viene con Autoit (el Scite).

La núcleo básico a modificar del codigo creado sería este, ya que el resto se puede dejar igual:
1.- Se define el titulo de la ventana a manejar y se coloca a la vista (en foco activo). (con la herramienta generador de macros o con el Au3Info se puede saber la denominación.
2.- Se envia una tecla al interface activo en este momento Control f
3.- Se envia una click izquierdo de ratón a las coordenadas 400,400

Código: Seleccionar todo

;Aqui 1.-         1111111111111111111111111111111111111
		$Ventana="Process";"El titulo de la ventana del programa"
			MsgBox(0,"Activando ventana","En seguida",1)
			WinActivate($Ventana) ; se pueden crear el envio de teclas y ratón con el grabador de Macros
			WinWaitActive($Ventana,"",5) ;espera 5 segundos por la ventana a que esté activa
;Aqui 2.-         222222222222222222222222222222222
			Sleep(2000) ; espera de 2 segundos
			Send("^f")  ;envio la tecla alt + a al interface del programa activo
;Aquí 3.-         333333333333333333333333333333333
			Sleep(1000) ; espera de 1 segundo
			MouseClick("left",400,400) ; hacer click en las coordenadas 400 400
El programa completo incluyendo formulario, botón y otros: :smt024 :smt024 :smt024

Código: Seleccionar todo

;Creditos BasicOs - Autoit.es
; Hello World - O programa muy básico para controlar un interface
;Crea un formulario con un botón para iniciar las acciones necesarias para el bot
; Envia una tecla a la interface y un click de ratón a unas coordenadas (atención a las coordenadas relativas o absolutas en OPT)
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
HotKeySet("{ESC}", "Salir")
GUICreate("Mi primer Robot", 264, 175)
GUICtrlCreateLabel("Poner una información adicional aqui mismo. ESC para salir", 30, 40, 200, 50)
$Button1 = GUICtrlCreateButton("Arrancar el Robot", 120, 120, 120, 25)
GUISetState(@SW_SHOW)

Opt("SendKeyDelay", 50)
Opt("SendKeyDownDelay", 100)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			$Ventana="Process";"El titulo de la ventana del programa"
			MsgBox(0,"Activando ventana","En seguida",1)
			WinActivate($Ventana) ; se pueden crear el envio de teclas y ratón con el grabador de Macros
			WinWaitActive($Ventana,"",5) ;espera 5 segundos por la ventana a que esté activa
			Sleep(2000)

			Send("^f")  ;envio la tecla alt + a al interface del programa activo
			Sleep(1000)

			MouseClick("left",400,400) ; hacer click en las coordenadas 400 400
	EndSwitch
WEnd

Func Salir()
	Exit
EndFunc
Salu2:)

Información adicional:
Edit de un post anterior:

Aquí tienes un ejemplo de "Esclavizar" alguna aplicación, otro que se hace algo así:

Un ejemplo para ganar al solitario de Xpyro: http://www.emesn.com/autoitforum/viewtopic.php?t=68

Enlace al Grabador de Macros con un ejemplo para arrancar el programa
y tambien http://www.emesn.com/autoitforum/viewtopic.php?t=81

Lo que necesitas lo puedes hacer con el ratón y teclado, mientras tengas activo el grabador de macros, el te va guardando, y te genera el código automáticamente.

En el Scite Menu tools, Au3Recorder, entonces puedes usar o retocar el código que te genera.

Puedes hacer algo como esto con más práctica: http://www.youtube.com/watch?v=BYV9WLP4OgM
o algo sencillo como esto..
http://www.youtube.com/watch?v=Gl3brW22XNs
la técnica leer los pixels de la pantalla identificando objetos y enviando coordenadas y clicks con MouseClick ...

Aquí unas cuantas demostraciones esclavizando entornos gráficos, con las funciones Pixel:
http://www.youtube.com/results?search_q ... rch=Search

Enlace de bot guildwars


Video tutoriales http://www.emesn.com/autoitforum/viewto ... 36&start=0

Un ejemplo: http://www.autoitscript.com/forum/index ... opic=99693
Salu22:)
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Empezando para principiantes para controlar los mandos

Mensaje por BasicOs »

Estos scripts pueden servir para programar el manejo de cámaras Web, o de paneles de control, entre otros: :smt024 :smt024

Seguro que ya muchos la conocen, pero aquí va una función para encontrar variaciones de los objetos o pixeles de una parte de la pantalla, que puede ser una cámra, el checksum genera un valor de una zona de la pantalla.

Esta función es para ver si algo cambia en la pantalla, creditos a la ayuda:

Código: Seleccionar todo

; Espera hasta que algo cambia en la región 0,0 a 50,50

; Consigue el checksum inicial
$checksum = PixelChecksum(0,0, 50,50)

;Se espera a que la región cambie, la región es chequeada cada 100ms para reducir carga de CPU
While $checksum = PixelChecksum(0,0, 50, 50)
  Sleep(100)
WEnd

MsgBox(0, "Aviso de cambio", "Algo ha cambiado en la región de la pantalla!")
Otra función que encuentra un checksum (vs PixelSearch)

Esta función se encuentra más documentada en el libro en papel o en PDF publicado de la guia a autoit (este manual de autoit en papel está bastante conseguido):
Para hacer un pedido
Y en el post del autor: http://www.autoitscript.com/forum/index ... opic=48333

Código: Seleccionar todo

; ===================================================================================
; _findchecksum UDF v1 - June 24, 2007
; Written by Andy Flesner
; ===================================================================================
#cs
Syntax is as follows: _findchecksum($checksum, $width, $height, $pcolor, $x = 0, $y = 0, $d_width = @DesktopWidth, $d_height = @DesktopHeight)

$checksum - the checksum to search for
$width - the width of the checksum area
$height - the height of the checksum area
$pcolor - the pixel color of the top left pixel of the checksum object
$x - the starting x coordinate
$y - the starting y coordinate
$D_Width - Width of the total search area, default is desktop resolution width
$D_Height - Height of the total search area, default is desktop resolution height

The function returns the x and y coordinates of the upper left corner where the checksum
is found as an array.  For Example:

	$coordinates = _findchecksum($checksum, $width, $height, $pcolor)

The x coordinate would be $coordinates[0] and the y coordinate would be $coordinates[1].

If the coordinates are not found, the function will return a value of 0.
#ce
; ===================================================================================

Func _findchecksum($checksum, $width, $height, $pcolor, $x = 0, $y = 0, $d_width = @DesktopWidth, $d_height = @DesktopHeight)
    $current_y = $d_height - 1
    While 1
        $xy = PixelSearch($x, $y, $d_width - 1, $current_y, $pcolor)
        If @error And $current_y = ($d_height - 1) Then
            Return 0
        ElseIf @error Then
            $x = 0
			$y = $current_y + 1
            $current_y = ($d_height - 1)
        ElseIf $checksum = PixelCheckSum($xy[0], $xy[1], $xy[0] + $width, $xy[1] + $height) Then
            Return $xy
        Else
            $x = $xy[0] + 1
			$y = $xy[1]
			$current_y = $y
        EndIf
    WEnd
EndFunc
Algunos videos de ejemplos al usarlo con Farmville:

Salu22:)
Adjuntos
ejemplo de programa extenso automatizacion.zip
Ejemplo programa extenso con reconocimiento pantalla
(13.47 KiB) Descargado 292 veces
Responder