Aplicación Con Interfaz Y Soporte De Scripts . Robot ?


Objetivo: Aplicación Con Interfaz Y Soporte De Scripts . Robot ?
Buenos días!.

Imaginar una aplicación que se esta ejecutando y esta a la espera de ordenes.
Esta ordenes pueden ser por ratón, teclado y ademas un script que recibe de alguna manera la aplicación.

Pudiera ser, desde una de serie de ordenes que sean para la propia aplicación, desde pulsar un botón,
hacer algo en la interfaz de esta. Pero sin pulsar una tecla o ratón en caso de que reciba el script.

Saludos

Objetivo: Re: Aplicación Con Interfaz Y Soporte De Scripts . Robot ?
Ejemplo:

Tengo un formulario con 4 botones.

Tengo que grabar la secuencia de ejecución de los botones.
Y luego se tienen que ejecutar tal como he creado la secuencia tantas veces como yo quiera.
Ese seria el script que leera la aplicación.

Saludos

última edición por Shell el Domingo, 23 Marzo 2014, 10:45; editado 1 vez
Objetivo: Re: Aplicación Con Interfaz Y Soporte De Scripts . Robot ?
He creado este ejemplo. No es que sea algo estable, pero mas o menos un paso.

Private log_de_botones As String
Private mostrando_procesos As Boolean
Private creando_procesos As Boolean

Public Sub _new()

End

Public Sub Form_Open()

End

Public Sub botones_Click()

If Not creando_procesos Or mostrando_procesos Then
' Si no estamos creando una lista de procesos,mostramos
' los procesos cargados o lo que hace el botón
Print " Has pulsado el boton con indice " & Last.tag
Else
log_de_botones &= Last.tag & "\n"
Endif

End

Public Sub btnFin_Click()

creando_procesos = False

End

Public Sub btnCrearProcesos_Click()

creando_procesos = True
log_de_botones = ""

End

Public Sub btnCargaProcesos_Click()

'Vaciamos el log de ordenes
log_de_botones = ""
log_de_botones = File.Load(User.Home &/ "Temporales/ordenes.txt")
mostrando_procesos = True

End

Public Sub btnGrabaProcesos_Click()

'Si la longitud de log de procesos contiene algo y no se estan creando procesos,
'grabamos la secuencia de botones
'
'Tendreis que crear el log en algun diretorio de vuestro disco
If log_de_botones And Not creando_procesos Then File.Save(User.Home &/ "Temporales/ordenes.txt", log_de_botones)

End

Public Sub btnSalir_Click()

Me.Close

End

Public Sub btnEjecutar_Click()

Dim ordenes As String[]
Dim comando As String

ordenes = Split(log_de_botones, "\n")
ordenes.Remove(ordenes.max)
For Each comando In ordenes
Last.tag = comando
botones_Click()
Next

End


Al final se crea una orden vacía que tengo que eliminar.

Subo el código.

No es un nombre muy sugerente.

última edición por Shell el Domingo, 23 Marzo 2014, 12:18; editado 1 vez

Interprete_boton.tar.gz
Descripción:  
Descargar
Nombre del archivo: Interprete_boton.tar.gz
Tamaño: 6.72 KB
Descargado: 66 veces
Interprete_boton.tar.gz
Descripción:  
Descargar
Nombre del archivo: Interprete_boton.tar.gz
Tamaño: 6.72 KB
Descargado: 66 veces
Interprete_boton.tar.gz
Descripción:  
Descargar
Nombre del archivo: Interprete_boton.tar.gz
Tamaño: 6.72 KB
Descargado: 66 veces

Objetivo: Re: Aplicación Con Interfaz Y Soporte De Scripts . Robot ?
Algo que tengo que mirar es:

Last.Name

Objetivo: Re: Aplicación Con Interfaz Y Soporte De Scripts . Robot ?
Shell:

Citar:
Robot ?

Realmente, lo que estas haciendo un bot para tu aplicación... puede ser interesente para hacer "tutoriales" de los propios programas, para enseñar lo que hace el programa, por ejemplo.

Quizás para hacer verdaderos "scripts" para los programas, lo suyo seria crear un interprete de comandos especificos de programa, y así trabajar directamente con las funciones del programa (y no trabajar con controles visuales (los botones, menus).

El programa de jodacame, realmente implementa su propio "interprete de comandos", fijate en el código de la subrutina Timer2:

Public Sub Timer2_Timer()
' Recorrido del script

Application.busy = 1
If ListViewListaOrdenes.Available Then 'Para controlar que no estamos en el final de la lista
Filtro = False ' Para controlar si vamos a saltar una linea
Label11.Caption = "Ejecutando: " & ListViewListaOrdenes.Item.Key & " (" & ListViewListaOrdenes.Item.text & ")" ' Mensaje de estado
Select Case Left$(ListViewListaOrdenes.item.Text, 4) ' Verificamos el comando que se realizara
Case "Mous"
funciones.ejecutar_comando("xdotool mousemove " & Replace$(Right$(ListViewListaOrdenes.item.Text, Len(ListViewListaOrdenes.item.Text) - 6), ",", " "))
Case "Coma"
funciones.ejecutar_comando(Right$(ListViewListaOrdenes.item.Text, Len(ListViewListaOrdenes.item.Text) - 9))
Case "clic"
' Verificamos si es click derecho o izquierdo
If Mid$(ListViewListaOrdenes.item.Text, 7, 1) = 1 Then
funciones.ejecutar_comando("xdotool click 1")
Else
funciones.ejecutar_comando("xdotool click 3")
End If
Case "Text"
funciones.ejecutar_comando("xdotool type '" & Right$(ListViewListaOrdenes.item.Text, Len(ListViewListaOrdenes.item.Text) - 6) & "'")
Case "Espe"
Sleep Val(Right$(ListViewListaOrdenes.item.Text, Len(ListViewListaOrdenes.item.Text) - 14))
Case "Salt"
ListViewListaOrdenes.MoveTo(Val(Right$(ListViewListaOrdenes.item.Text, Len(ListViewListaOrdenes.item.Text) - 16)))
Filtro = True
End Select

If Filtro = False Then
ListViewListaOrdenes.MoveNext
End If
Else
Label11.Caption = "Finalizado"
If repitevalor > 1 Then
repitevalor -= 1
ListViewListaOrdenes.MoveFirst()
Timer2.Enabled = True
Else
Timer2.Enabled = False
Endif
End If
Application.busy = 0

End


Es simple pero efectivo.
Para mejorarlo ( hacerlo más fácil de ampliar, y de rehusar ), habría que usar el patron Strategy para eleminar el Selec Case y el patrón Comand (para implementar las ordenes o comandos).

Saludos

Objetivo: Re: Aplicación Con Interfaz Y Soporte De Scripts . Robot ?
Veo que es distinto.

Con algo mas de tiempo pruebo x-bot y hoy en un momento de tranquilidad veo el vídeo.

En principio mi idea era que la aplicación hiciera algo con unos pasos grabados.
Para tutoriales no esta nada mal, sobre todo la comprobación de si los
pasos son los correctos.

El interprete es mas como tu dices.

Gracias.


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.498s (PHP: -71% SQL: 171%)
Consultas SQL: 49 - Debug off - GZIP Activado