Sobre _IECreateEmbedded()

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Sobre _IECreateEmbedded()

Mensaje por avechuche »

Bueno resulta que tengo una duda al respecto de como usar el _IECreateEmbedded() ...
Mediante el comando $oIE = _IECreate($URL), abre IE, entra a la pagina web asignada por "$URL", y desde ahi todo los datos HTML, por ejemplo.
Entro a un foro y necesito el foco en el input donde poner el usuario y luego el pass. Sencillo, con $oSubmit = _IEGetObjById($oIE, $iUsuario) (Donde $iUsuario es el id del input "usuario") tomo el objeto y me mediante, _IEAction($oSubmit, "focus"), le doy el focus y desp con "_IEFormElementSetValue($oSubmit, GUICtrlRead($Input_Usuario))" agrego el usuario, hasta ahi todo bien, pero si lo hago mediante _IECreate.
Resulta que no quiero que me este abriendo IE, quiero crear un GUI que contenga el objeto IE dentro. Por ejemplo:

Código: Seleccionar todo

$oIEe = _IECreateEmbedded()
GUICreate("Example (" & StringTrimRight(@ScriptName, 4) & ")", $Ancho_GUI, $Alto_GUI, -1, -1)
GUICtrlCreateObj($oIEe, 10, 10, $Ancho_GUI - 20, $Alto_GUI - 20)
GUISetState(@SW_SHOW)
$oIE = _IENavigate($oIEe, $URL)
Con eso logro que me cree el objeto IE dentro del GUI y todo muy bien. Ahora el problema

No puedo usar los camandos "_IEGetObjById($oIE, $iUsuario)", por ejemplo. Osea quiero tomar el ID del input "usuario" de la pagina que se abrio en el GUI, pero con eso no me deja. ¿Hay alguna forma de hacerlo?

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

Re: Sobre _IECreateEmbedded()

Mensaje por Chefito »

No tienes por que tener ningún tipo de problema al tratar con objetos en el propio internet explorer o un objeto IE indexado. Se hace exactamente igual con idénticos resultados.
Mira este ejemplo adaptado del ejemplo de la función _IECreateEmbedded que trae la ayuda.

Código: Seleccionar todo

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

_IEErrorHandlerRegister ()

$oIE = _IECreateEmbedded ()
GUICreate("Embedded Web control Test", 640, 580, _
		(@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
		$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
$GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 600, 360)
$GUI_Button_Back = GUICtrlCreateButton("Poner contraseña", 10, 420, 100, 30)
$GUI_Button_Forward = GUICtrlCreateButton("Enviar", 120, 420, 100, 30)
$GUI_Button_Home = GUICtrlCreateButton("Poner Email", 230, 420, 100, 30)

GUISetState()       ;Show GUI

_IENavigate ($oIE, "https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fhl%3Des%26tab%3Dwm%26ui%3Dhtml%26zy%3Dl&bsv=llya694le36z&scc=1&ltmpl=default&ltmplcache=2&hl=es")

; Waiting for user to close the window
While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = $GUI_EVENT_CLOSE
			ExitLoop
		Case $msg = $GUI_Button_Home
			$oEmail=_IEGetObjById($oIE, "Email")
			$oEmail.value="mi_email"
		Case $msg = $GUI_Button_Back
			$oEmail=_IEGetObjById($oIE, "Passwd")
			$oEmail.value="mi_password"
		Case $msg = $GUI_Button_Forward
			$oSubmit=_IEGetObjById($oIE, "signIn")
			_IEAction($oSubmit, "click")
	EndSelect
WEnd

GUIDelete()

Exit
Como puedes ver no hay ningún problema al trabajar con los objetos de la página.
Puedes trabajar con ellos con las funciones que te trae la udf IE, con las que trabajan con los objetos de IE o a través de las funciones que trabajan con los objetos form. También puedes trabajar directamente con los objetos y sus propiedades, métodos y eventos. Para esto tienes que saber algo sobre html dinámico.

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 ;).
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Re: Sobre _IECreateEmbedded()

Mensaje por avechuche »

Bue ... hace 8 hs no andaba -.- ... reinicie la PC y arranco ... quien sabe ... Muchas gracias! :)
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Sobre _IECreateEmbedded()

Mensaje por BasicOs »

Chefito escribió:No tienes por que tener ningún tipo de problema al tratar con objetos en el propio internet explorer o un objeto IE indexado. Se hace exactamente igual con idénticos resultados.
Mira este ejemplo adaptado del ejemplo de la función _IECreateEmbedded que trae la ayuda.

Código: Seleccionar todo

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

_IEErrorHandlerRegister ()

$oIE = _IECreateEmbedded ()
GUICreate("Embedded Web control Test", 640, 580, _
		(@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
		$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
$GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 600, 360)
$GUI_Button_Back = GUICtrlCreateButton("Poner contraseña", 10, 420, 100, 30)
$GUI_Button_Forward = GUICtrlCreateButton("Enviar", 120, 420, 100, 30)
$GUI_Button_Home = GUICtrlCreateButton("Poner Email", 230, 420, 100, 30)

GUISetState()       ;Show GUI

_IENavigate ($oIE, "https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fhl%3Des%26tab%3Dwm%26ui%3Dhtml%26zy%3Dl&bsv=llya694le36z&scc=1&ltmpl=default&ltmplcache=2&hl=es")

; Waiting for user to close the window
While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = $GUI_EVENT_CLOSE
			ExitLoop
		Case $msg = $GUI_Button_Home
			$oEmail=_IEGetObjById($oIE, "Email")
			$oEmail.value="mi_email"
		Case $msg = $GUI_Button_Back
			$oEmail=_IEGetObjById($oIE, "Passwd")
			$oEmail.value="mi_password"
		Case $msg = $GUI_Button_Forward
			$oSubmit=_IEGetObjById($oIE, "signIn")
			_IEAction($oSubmit, "click")
	EndSelect
WEnd

GUIDelete()

Exit
Como puedes ver no hay ningún problema al trabajar con los objetos de la página.
Puedes trabajar con ellos con las funciones que te trae la udf IE, con las que trabajan con los objetos de IE o a través de las funciones que trabajan con los objetos form. También puedes trabajar directamente con los objetos y sus propiedades, métodos y eventos. Para esto tienes que saber algo sobre html dinámico.

Saludos.
Te ha salido un buen minitutorial para la explicación del proceso de uso _IE para enviar el usuario y pass en páginas. :smt038 :smt038 :smt029
Salu22.)
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Sobre _IECreateEmbedded()

Mensaje por Chefito »

Mmmmm.....minitutorial? No creo. Casi no explico nada :smt016 . Simplemente he respondido un post y he puesto un código de ejemplo.

Si cualquiera que se moleste utiliza el buscador del foro, verá ejemplos de este tipo a montones, y seguro que en muchos de éstos mejor explicados. Como todos sabemos es un tema muy machacado por aquí :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 ;).
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Sobre _IECreateEmbedded()

Mensaje por BasicOs »

Hay bastantes posts de este tema, pero te salió breve, y lo bueno breve, doblemente bueno. :smt043 :smt043
Responder