Página 1 de 1

Ayuda básica maximizar y minimizar ventanas

Publicado: 12 Mar 2014, 20:59
por chriszga
:smt010 :smt010 :smt010 Hola, soy nuevo en el foro.
Tengo una duda que no he podido solucionar siendo muy facil y el problema es el siguiente...
Tengo 2 ventanas de microsoft Excel 2007 abiertas y minimizadas en la barra de tareas, una se llama "Numero 1" y la otra "Numero 2"..
la idea es que al iniciar el programa autoit3 me reconozca primero "Numero 1" y lo maximice, para luego minimizarlo y despues maximice el "Numero 2" y lo minimice.
con el "Numero 1" todo bien, eso lo puedo hacer ocupando este scrip:
WinActivate("Microsoft Excel - Numero 1")
_WinWaitActivate("Microsoft Excel - Numero 1","")
WinSetState("Microsoft Excel - Numero 1", "", @SW_MAXIMIZE)
Sleep(2000)
WinSetState("Microsoft Excel - Numero 1", "", @SW_MINIMIZE)

pero el problema aparece cuando trato hacer ese mismo scrip para el "Numero 2", me pude dar cuenta que el programa funciona muy bien con carpetas, pero con archivos como en este caso el microsoft excel, solo puede reconocer 1 solo de 2 archivos abiertos.
Por favor si alguen me puede ayudar estaría muy agradecido.
Saludos.

Re: Ayuda básica maximizar y minimizar ventanas

Publicado: 13 Mar 2014, 14:53
por PDF
Hola y Bienvenido..

Puedes probar utilizando el parametro 3 para WinTitleMatchMode esto haría que coincida el titulo exacto para las ventanas ya que por defecto, Autoit busca la primera coincidencia, prueba añadiendo esto "Opt("WinTitleMatchMode",3)" al principio del script que llevas, así:

Código: Seleccionar todo

Opt("WinTitleMatchMode",3)
WinActivate("Microsoft Excel - Numero 1")
_WinWaitActivate("Microsoft Excel - Numero1","")
WinSetState("Microsoft Excel - Numero 1", "",@SW_MAXIMIZE)
WinSetState("Microsoft Excel - Numero 1", "",@SW_MINIMIZE)
Sleep(2000) ; eperar 2 segundos

WinActivate("Microsoft Excel - Numero 2")
_WinWaitActivate("Microsoft Excel - Numero2","")
WinSetState("Microsoft Excel - Numero 2", "",@SW_MAXIMIZE)
WinSetState("Microsoft Excel - Numero 2", "",@SW_MINIMIZE)
Tienes que tener en cuenta que debe ser el titulo exacto
Saludos.. Y para lo que necesites, estamos aquí..

Re: Ayuda básica maximizar y minimizar ventanas

Publicado: 13 Mar 2014, 15:57
por Dany
@PDF:
Por lógica yo lo vi como dices y debería funcionar. pero por alguna razón no funciona a veces no activa la ventana. entonces la solución que conseguí fue enviar WinActivate($hWnd1) 2 veces.

saludos



Hola chriszga, Bienvenido(a), la verdad no suelo Atomatizar nada con AutoIt. pero la solucion que consegui para que funcione es esta.

Código: Seleccionar todo

Opt("WinTitleMatchMode", 3)     ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase




Local $hWnd1 = WinGetHandle("Numero 1")
Local $hWnd2 = WinGetHandle("Numero 2")
ConsoleWrite("Handle 1=" & $hWnd1 & @crlf)
ConsoleWrite("Handle 2=" & $hWnd2 & @crlf)
WinActivate($hWnd1) ;Ventana Numero 1
WinActivate($hWnd1) ;Ventana Numero 1
WinSetState("[ACTIVE]","",@SW_MAXIMIZE)
Sleep(1000)
WinSetState("[ACTIVE]","",@SW_MINIMIZE)
Sleep(1000)
WinActivate($hWnd2) ;Ventana Numero 2
WinActivate($hWnd2) ;Ventana Numero 2
WinSetState("[ACTIVE]","",@SW_MAXIMIZE)
Sleep(1000)
WinSetState("[ACTIVE]","",@SW_MINIMIZE)
proba y me contas.


Saludos

Re: Ayuda básica maximizar y minimizar ventanas

Publicado: 13 Mar 2014, 19:19
por chriszga
Buenas tardes a todos los del foro autoit :smt024 :
el que me funciono fue el del usuario "Dany", pero funciona un poco extraño ya que a veces maximiza el "Numero 1" dos veces y otras veces funciona excelente y debido a esto no me sirve. Tambien, al ejecutarlo junto a otro archivo excel, es decir, tener minimizado en la barra de tareas 3 archivos excel, para este caso el "Numero 1", "Numero 2" y uno llamado "Numero 3", al ejecutar tu programa, este no reconoce el nombre del excel a maximizar, por lo que me pude dar cuenta que al maximizar y minimizar algun excel por ejemplo el "Numero 3" antes de ejecutar tu programa, y luego ejecuto tu programa, este maximiza y minimiza solamente el que maximice y minimice manualmente antes de ejecutar tu programa.
Siendo tan basico y simple lo que quiero hacer, no funciona, ojala alguen me pueda ayudar... :smt022
De todos modos se agradece su respuesta y ayuda inmediata.
Saludos :smt001

Re: Ayuda básica maximizar y minimizar ventanas

Publicado: 13 Mar 2014, 19:39
por Dany
Si, realmente parece fácil y por lógica debería funcionar pero por alguna razón no funciona. voy a revisar otra vez a ver si logro dar con la solución.

Saludos

Re: Ayuda básica maximizar y minimizar ventanas

Publicado: 19 Mar 2014, 19:20
por Chefito
Si tienes problemas con las funciones típicas de windows para tratar ventanas, ya sea porque se hace un lío al ser de la misma clase o quien sabe por que, podéis obtener el objeto excel para recuperar los libros que ya están cargados en windows (en este caso creo entender que es eso), y trabajar con sus propiedades, métodos y eventos directamente desde AutoIt. Recordar que también se pueden crear objetos excel y, por ejemplo, cargar los libros desde el script....pero bueno, eso es otra historia. Vamos a lo que se pregunta. Un ejemplo con comentarios:

Código: Seleccionar todo

Global Const $xlMaximized=-4137		;Maximized
Global Const $xlMinimized=-4140		;Minimized
Global Const $xlNormal=-4143		;Normal


$oExcel = ObjGet("", "Excel.Application")	;obtengo el objeto excel que se encuentren cargados en windows

$oExcel.Application.visible=1		;con esto, visiono el libro excel, aunque esté ya maximizada detrás de otras ventanas.
;~ $oExcel.Application.Workbooks('Numero 3.xlsx').activate		;se puede utilizar el nombre del libro (nombre del archivo) para trabajar directamente con él y ser más exacto.
$oExcel.Application.Workbooks(1).activate		;activo el libro Numero 1. Se puede utilizar lo anterior en vez de el libro número 1 según su orden de carga.
$oExcel.Application.WindowState= $xlMaximized		;Maximizo el libro Numero 1
Sleep(2000)
;~ $oExcel.Application.visible=1
$oExcel.Application.Workbooks(1).activate
$oExcel.Application.WindowState= $xlMinimized
Sleep(2000)
$oExcel.Application.visible=1
$oExcel.Application.Workbooks(2).activate
$oExcel.Application.WindowState= $xlMaximized
Sleep(2000)
;~ $oExcel.Application.visible=1
$oExcel.Application.Workbooks(2).activate
$oExcel.Application.WindowState= $xlMinimized

Saludos.

Re: Ayuda básica maximizar y minimizar ventanas

Publicado: 28 Mar 2014, 20:08
por wbueso
Esto es lo que pude lograr con lo poco que entendi, en la yuda de autoit me base, y tome el que envio Chefito como muestra.

Código: Seleccionar todo

#include <Excel.au3>

Global Const $xlMaximized=-4137
Global Const $xlMinimized=-4140
;Global Const $xlNormal=-4143


$oExcel = ObjGet("", "Excel.Application")   ;obtengo el objeto excel que se encuentren cargados en windows

$oExcel.Application.visible=1      ;con esto, visiono el libro excel, aunque esté ya maximizada detrás de otras ventanas.
Sleep(1000)
;~ $oExcel.Application.Workbooks('Numero 3.xlsx').activate      ;se puede utilizar el nombre del libro (nombre del archivo) para trabajar directamente con él y ser más exacto.
;$oExcel.Application.Workbooks("Numero1").activate ;activo el libro Numero 1. Se puede utilizar lo anterior en vez de el libro número 1 según su orden de carga.
_ExcelSheetActivate($oExcel, "Numero1")
Sleep(1000)
;$oExcel.Application.WindowState= $xlMaximized      ;Maximizo el libro Numero 1
;Sleep(2000)
 $oExcel.Application.visible=1
;$oExcel.Application.Workbooks('Numero1').activate
;Sleep(2000)
$oExcel.Application.WindowState= $xlMinimized
;Sleep(2000)
;$oExcel.Application.visible=1
;$oExcel.Application.Workbooks('Numero2').activate

Sleep(1000)
$oExcel.Application.WindowState= $xlMaximized
Sleep(1000)
_ExcelSheetActivate($oExcel, "Numero2")
 ;$oExcel.Application.visible=1
;$oExcel.Application.Workbooks('Numero2').activate
Sleep(1000)
$oExcel.Application.WindowState= $xlMinimized

Re: Ayuda básica maximizar y minimizar ventanas

Publicado: 10 Abr 2014, 20:20
por chriszga
Gracias por sus respuestas y posibles soluciones, pero para ser sincero probé todas y ninguna funciono :smt009 . Analice las lineas de programación y los comentarios de las mismas, pero aun no entiendo la razón de que no detecte la ventana por el mismo nombre, a mi parecer creo que es un grabe problema dentro del programa autoit.

Re: Ayuda básica maximizar y minimizar ventanas

Publicado: 23 Abr 2014, 17:26
por Chefito
Mi código funciona perfectamente en mi ordenador, que consta de windows 7 y excell 2007. No se que puede ocurrirte. Si alguien prueba mi código con el mismo nombre en las hojas excell que ponen en mi programa, que diga si le funciona o no.

Saludos.

Re: Ayuda básica maximizar y minimizar ventanas

Publicado: 27 Abr 2014, 06:46
por PDF
Hola de nuevo a todos..

Este problema de maximizar y minimizar ventanas de Excel tal vez este en utilizar el titulo exacto de la ventana ya que utilizamos Opt("WinTitleMatchMode",3). En mi caso este simple código funciona perfectamente:

Código: Seleccionar todo

Opt("WinTitleMatchMode",3)
WinActivate("Numero 1.xlsx - Microsoft Excel")
WinSetState("Numero 1.xlsx - Microsoft Excel", "",@SW_MAXIMIZE)
WinSetState("Numero 1.xlsx - Microsoft Excel", "",@SW_MINIMIZE)
Sleep(2000) ; esperar 2 segundos

WinActivate("Numero 2.xlsx - Microsoft Excel")
WinSetState("Numero 2.xlsx - Microsoft Excel", "",@SW_MAXIMIZE)
WinSetState("Numero 2.xlsx - Microsoft Excel", "",@SW_MINIMIZE)
Solo que las ventanas "Numero 1.xlsx - Microsoft Excel" y "Numero 2.xlsx - Microsoft Excel" deben estar abiertas y deben tener ese titulo exacto...
Chefito escribió:Mi código funciona perfectamente en mi ordenador, que consta de windows 7 y excell 2007. No se que puede ocurrirte. Si alguien prueba mi código con el mismo nombre en las hojas excell que ponen en mi programa, que diga si le funciona o no.
El código que propone Chefito también funciona, cabe mencionar que utilizo Windows 8 y el Office 2013, es otra forma más compleja de hacerlo utilizando métodos y eventos :smt017

Saludos