Página 1 de 1

Identificar una ventana

Publicado: 02 Mar 2010, 00:02
por arganeum
Buenas, he estado buscando por el foro pero no he terminado de aclararme. Mi intención es automátizar la instalación del office 2007, el problema viene cuando no veo un identificador único para cada una de las ventanas de la instalación. Les pego aqui la info sacada desde el Window Info:

Código: Seleccionar todo

>>>> Window <<<<
Title:	Microsoft Office Enterprise 2007
Class:	SetupExe
Position:	897, 10
Size:	619, 522
Style:	0x14C80000
ExStyle:	0x00000100
Handle:	0x000103CE

>>>> Control <<<<
Class:	NetUIHWND_CatalystFlexUI
Instance:	1
ClassnameNN:	NetUIHWND_CatalystFlexUI1
Name:	
Advanced (Class):	[CLASS:NetUIHWND_CatalystFlexUI; INSTANCE:1]
ID:	
Text:	
Position:	0, 0
Size:	613, 490
ControlClick Coords:	376, 334
Style:	0x56000000
ExStyle:	0x00000000
Handle:	0x000103D4

>>>> Mouse <<<<
Position:	1276, 373
Cursor ID:	0
Color:	0xE1EFFE

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
NUIDocumentWindow

>>>> Hidden Text <<<<
Usuario
C:\Archivos de programa\Microsoft Office
En todas las ventanas me marca lo mismo, la única diferencia que veo entre una ventana y otra es el Hidden Text. Sin embargo, no veo ninguna opción (posiblemente no vea bien) de como identificarlo por este campo.

Mi código a medio hacer:

Código: Seleccionar todo

Run("C:\Documents and Settings\Usuario\Mis documentos\Office Enterprise 2007\setup.exe")
; Seguimos los pasos de instalación
WinWaitActive("[CLASS:NetUIHWND_CatalystFlexUI; INSTANCE:1]")
Send("***************** {ENTER}")
WinWaitActive("Microsoft Office Enterprise 2007", "TÉRMINOS DE LICENCIA")
Send("!a {ENTER}")
WinWaitActive("Microsoft Office Enterprise 2007", "NUIDocumentWindow")
Send("{ENTER}")
Se me queda trabado en la primera ventana, alguien me puede enseñar como puedo identificar cada una de las ventanas?

Gracias y un saludo.

EDITADO: uff sorry, me he equivocado de lugar en el posteo, lo siendo moderador :smt022

Re: Identificar una ventana

Publicado: 02 Mar 2010, 01:26
por BasicOs
Hola
Puedes cambiar el título de donde se te para por "Microsoft Office Enterprise 2007", seguramente es que no encuentra la ventana con los parámetros que das.
Puedes activar con AutoItSetOption() /Opt.
Opt("WinDetectHiddenText", 1) que especifica si el texto oculto puede verse por las funciones de ventana
0 = no detecta texto oculto (por defecto)
1 = Si detecta texto oculto
No obstante para una instalación también puedes usar en la función un tiempo de espera (timeout), o bien desde que aparezca una ventana (aunque sean iguales para las informaciones de identificación), puedes calcular tiempos y enters o Alt+Letra con send().
WinWaitActive("Microsoft Office Enterprise 2007", "TÉRMINOS DE LICENCIA",2) para dos segundos...

Incluso en el peor de los casos puedes usar las funciones de _pixel... _pixelsearch() para busca e identificar un texto por su checksum gráfico, o para ver si hay algún cambio gráfico en una zona específica de la pantalla.
Salu2:) :smt024

Re: Identificar una ventana

Publicado: 03 Mar 2010, 21:01
por xterix2
Hola.

Te recomiendo que utilices la programación del Office.

Ejecutas desde la carpeta del office setup.exe /admin, te aparecerá una ventana donde elegir como quieres que se instale, una vez revisado todo guardas esa configuración como un fichero .msp, luego ejecutas el office con setup.exe /adminfile "file.msp" y ya tienes tu instalación automatizada.

Un Saludo.
Tomás

Re: Identificar una ventana

Publicado: 04 Mar 2010, 00:28
por arganeum
jajaja, funciona!! :D

He probado activando la visualización del texto oculto y me ha funcionado perfectamente. Me falta por probar la función pixelsearch(), seguro que me hará falta en algún momento.

Con respecto a la instalación creando un fichero de respuesta del office, no me lo había planteado, debido a que no me permiten meter nada en el FTP desde el que pienso acceder para hacer las instalaciones del Office.

Muchas gracias a ambos por toda la info, saludos :smt024 .