Leer datos de objetos no reconocidos

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Fearx17
Mensajes: 4
Registrado: 28 Mar 2016, 22:25

Leer datos de objetos no reconocidos

Mensaje por Fearx17 »

Hola a todos! soy nuevo en el foro y usando la herramienta, la verdad que muy novato y espero que me puedan ayudar, porque estoy en aprietos en el trabajo jajaaj.
Creo que es bastante avanzado ,pero seguro alguno puede ayudarme.

Me encuentró con el siguiente problema al tener que leer los datos de una tabla del aplicativo a automatizar:

El AutoIT Windows Info no me reconoce los valores de la tabla, sino la tabla completa:
Si capturo el borde del objeto, me devuelve lo siguiente:

Imagen

Si capturo el interior de la tabla, me devuelve lo siguiente:

https://lh3.googleusercontent.com/-H2Ql ... eTabla.PNG

Bueno, la verdad soy muy nuevo y no supe ni por donde empezar. La aplicación es .NET , quiza con alguna libreria externa el autoIt reconosca la tabla? hay alguna manera de obtener la tabla como objeto y luego recorrerla? por lo que vi, el autoIt no maneja objetos de la manera convencional.

desde ya gracias! :smt041
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Leer datos de objetos no reconocidos

Mensaje por Chefito »

Te voy a copiar un fragmento de un post anterior mío :smt003 :

Puedes utilizar IUIAutomation de microsoft. Me ha sacado de muchos aprietos para controles no estandars de windows que el Autoit Windows Info no los reconocía y por este método sí. Tienes la udf hecha por junkew en el foro ingles: https://www.autoitscript.com/forum/topi ... ie/?page=1 . Está muy bien. Lee un poco y verás que te solucionará muchos problemas de este tipo. Por cierto, tiene una especie de Autoit Windows info propio para señalar el control que quieres y te genere el código general automáticamente.

Añadir que también trae varios ejemplos, y que además su hilo en el foro ingles contiene muchos post con ejemplos y dudas. Por lo tanto lo tienes casi todo resuelto.
Pero si te atascas en alguna cosa, dila en el foro. Yo ya tengo alguna experiencia con esta udf :smt002 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Fearx17
Mensajes: 4
Registrado: 28 Mar 2016, 22:25

Re: Leer datos de objetos no reconocidos

Mensaje por Fearx17 »

Muchisimas gracias por responder!, Estube leyendo bastante, excede un poco mi conocimiento pero pude detectar botones que antes no podia..
Lo que mucho no me cierra es como captar tal vez el atributo Titulo del objeto, sin pasarle el titulo como parametro jaja,
o bien, una vez que tengo el objeto , leerlo. Con getvalue no me trae nada. Me refiero al texto del bloque que agarré.
Necesitaria la manera de que, agarrando un objeto, me lea el texto de sus subObjetos.

Bueno la verdad, seria genial si me podes ayudar, pero yo por mi parte sigo experimentando, muchisimas gracias!!!! :smt003 :smt003
Fearx17
Mensajes: 4
Registrado: 28 Mar 2016, 22:25

Re: Leer datos de objetos no reconocidos

Mensaje por Fearx17 »

Hola! estoy teniendo un problema al querer leer una propiedad de un objeto que capturé

Imagen

te cuento lo que hice, primero copie el Standart code que me dió el SimpleSpy,

Código: Seleccionar todo

#include "UIAWrappers.au3"

main()

func main()
	Local $oP8=_UIA_getObjectByFindAll($UIA_oDesktop, "Title:=Clientes (50542601) - testing@optes (Cablevision S.A.);controltype:=UIA_WindowControlTypeId;class:=WindowsForms10.Window.8.app.0.215472d", $treescope_children)
	_UIA_Action($oP8,"setfocus")
	Local $oP7=_UIA_getObjectByFindAll($oP8, "Title:=;controltype:=UIA_PaneControlTypeId;class:=WindowsForms10.Window.8.app.0.215472d", $treescope_children)
	_UIA_Action($oP7,"setfocus")
	Local $oP6=_UIA_getObjectByFindAll($oP7, "Title:=;controltype:=UIA_TabControlTypeId;class:=WindowsForms10.Window.8.app.0.215472d", $treescope_children)
	_UIA_Action($oP6,"setfocus")
	Local $oP5=_UIA_getObjectByFindAll($oP6, "Title:=;controltype:=UIA_PaneControlTypeId;class:=WindowsForms10.Window.8.app.0.215472d", $treescope_children)
	_UIA_Action($oP5,"setfocus")
	Local $oP4=_UIA_getObjectByFindAll($oP5, "Title:=;controltype:=UIA_PaneControlTypeId;class:=WindowsForms10.Window.8.app.0.215472d", $treescope_children)
	_UIA_Action($oP4,"setfocus")
	Local $oP3=_UIA_getObjectByFindAll($oP4, "Title:=;controltype:=UIA_TabControlTypeId;class:=WindowsForms10.Window.8.app.0.215472d", $treescope_children)
	_UIA_Action($oP3,"setfocus")
	Local $oP2=_UIA_getObjectByFindAll($oP3, "Title:=;controltype:=UIA_PaneControlTypeId;class:=WindowsForms10.Window.8.app.0.215472d", $treescope_children)
	_UIA_Action($oP2,"setfocus")
	Local $oP1=_UIA_getObjectByFindAll($oP2, "Title:=;controltype:=UIA_TableControlTypeId;class:=WindowsForms10.Window.8.app.0.215472d", $treescope_children)
	_UIA_Action($oP1,"setfocus")
EndFunc
luego en vez de hacer clic hice lo siguiente

Código: Seleccionar todo

	local $texto = _UIA_GetPropertyValue("Title:=CORPORATIVE_CUSTOMERCUSTOMERCONTRACT row 1;controltype:=UIA_CustomControlTypeId;class:=","UIA_LegacyIAccessibleValue");
	InputBox("",$texto)
Pero en vez de devolverme lo que quiero ,me muestra esto:

Imagen

que puede ser? cual es la manera correcta de captar el valor de la propiedad de un objeto ??
Te super agradeceria si me podes responder!! saludossssssssss :smt041
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Leer datos de objetos no reconocidos

Mensaje por Chefito »

Se puede hacer de varias maneras. Prueba con este código:

Código: Seleccionar todo

Local $oUIElement=_UIA_getobject("Title:=Clientes (50542601) - testing@optes (Cablevision S.A.);controltype:=UIA_WindowControlTypeId;class:=WindowsForms10.Window.8.app.0.215472d")
If IsObj($oUIElement) Then
   Local $valorPropiedad=_UIA_getPropertyValue($oUIElement,$UIA_LegacyIAccessibleValuePropertyId)
   MsgBox(0,"",$valorPropiedad)
Else
   MsgBox(16,"Error", "No hay ningún objeto.")
EndIf
Puedes ver las variables de las propiedades de los objetos enlazadas al nombre que muestra simplespy.au3 en el archivo UIAWrappers.au3 . Están definidas en una variable matriz.
Las variables están definidas una a una en el archivo CUIAutomation2.au3 .
Te recomiendo que examines las funciones del archivo UIAWrappers.au3 para saber más, pero tienes que tener un determinado nivel de autoit.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Fearx17
Mensajes: 4
Registrado: 28 Mar 2016, 22:25

Re: Leer datos de objetos no reconocidos

Mensaje por Fearx17 »

Justo ayer a la mañana estube con eso y llege a esa misma conclusión que me contaste, y me funciono!
Muchisimas gracias por la ayuda y tu tiempo ! un saludo!! :smt003 :smt003 :smt003
Responder