Ayuda básica maximizar y minimizar ventanas
Ayuda básica maximizar y minimizar ventanas
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.
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
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í:
Tienes que tener en cuenta que debe ser el titulo exacto
Saludos.. Y para lo que necesites, estamos aquí..
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)
Saludos.. Y para lo que necesites, estamos aquí..
Re: Ayuda básica maximizar y minimizar ventanas
@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.
proba y me contas.
Saludos
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)
Saludos
- ............................................
......................................
Re: Ayuda básica maximizar y minimizar ventanas
Buenas tardes a todos los del foro autoit :
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...
De todos modos se agradece su respuesta y ayuda inmediata.
Saludos
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...
De todos modos se agradece su respuesta y ayuda inmediata.
Saludos
Re: Ayuda básica maximizar y minimizar ventanas
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
Saludos
- ............................................
......................................
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Ayuda básica maximizar y minimizar ventanas
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:
Saludos.
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.
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 ;).
Re: Ayuda básica maximizar y minimizar ventanas
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
Gracias por sus respuestas y posibles soluciones, pero para ser sincero probé todas y ninguna funciono . 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.
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Ayuda básica maximizar y minimizar ventanas
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.
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 ;).
Re: Ayuda básica maximizar y minimizar ventanas
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:
Solo que las ventanas "Numero 1.xlsx - Microsoft Excel" y "Numero 2.xlsx - Microsoft Excel" deben estar abiertas y deben tener ese titulo exacto...
Saludos
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)
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 eventosChefito 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.
Saludos