En esta oportunidad quiero aperturar este tema para ver si aportamos informacion sobre los eventos que se producen cuando utilizamos Internet Explorer. Se agradece en español por favor......
En esta oportunidad publicare algo que me pareció interesante referente al evento DWebBrowserEvents el cual posee 14 propiedades manejables que de paso le indico que segun MSDN ya esta obsoleto y su actualización lleva por nombre DWebBrowserEvents2 el cual posee 38 propiedades o argumentos con los cuales poder trabajar. En los siguientes links podran accesar a esa información para DWebBrowserEvents (http://msdn.microsoft.com/en-us/library ... 85%29.aspx) y para DWebBrowserEvents2 (http://msdn.microsoft.com/en-us/library ... 85%29.aspx)
En el siguiente código (adquirido de nuestros compañerosgringos) podemos observar su implementación.
Código: Seleccionar todo
; Script ejemplo para mostrar el uso del COM Event functions.
; Requiere la ultima versión de AutoIt beta 3.1.1.104 !
dim $odoc
; Usaremos un GUI muy simple para mostrar los resultados de los eventos.
#include "GUIConstants.au3"
$GUIMain=GUICreate ( "Event Test", 600,500 )
$GUIEdit=GUICtrlCreateEdit ( "Test Log:" & @CRLF, 10, 20, 580, 400)
$GUIProg=GUICtrlCreateProgress ( 10, 5, 580, 10)
$GUIExit=GUICtrlCreateButton ( " Close ", 250, 450, 80, 30)
GUISetState () ;Muestro el GUI
; Preparamos el IE para las pruebas
$oIE=ObjCreate("InternetExplorer.Application.1")
With $oIE
.Visible=1
.Top = (@DesktopHeight-400)/2
.Height=400 ; Make it a bit smaller than our GUI.
.Width=600
.Silent=1 ; No mostrarDon't show IE's dialog boxes
$IEWnd=HWnd(.hWnd) ; Remember the Window, in case user decides to close it
EndWith
; We choose for a specific Internet Explorer interface 'DWebBrowserEvents' because the IE is subject
; to modifications by e.g. Visual Studio and Adobe Acrobat Reader. If you have IE-plugins installed,
; AutoIt might not be able to find the correct interface automatically.
$EventObject=ObjEvent($oIE,"IEEvent_","DWebBrowserEvents")
if @error then
Msgbox(0,"AutoIt COM Test", _
"ObjEvent: Can't use event interface 'DWebBrowserEvents'. Error code: " & hex(@error,8))
exit
endif
; Iniciamos una pagina web de prueba.
$URL = "http://www.autoit.com"
$oIE.Navigate( $URL )
sleep(1000) ; Give it some time to load the web page
GUISwitch ( $GUIMain ) ; Switch back to our GUI in case IE stealed the focus
; Waiting for user to close the GUI.
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE or $msg = $GUIExit Then ExitLoop
Wend
$EventObject.Stop ; Tell IE we don't want to receive events.
$EventObject=0 ; Kill the Event Object
If WinExists($IEWnd) then $oIE.Quit ; Close IE Window
$oIE=0 ; Remove IE from memory (not really necessary).
GUIDelete () ; Remove GUI
exit ; End of our Demo.
; A few Internet Explorer Event Functions
; See also: [url="http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/webbrowser.asp"]http://msdn.microsoft.com/workshop/browser.../webbrowser.asp[/url]
Func IEEvent_BeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
; Note: the declaration is different from the one on MSDN.
GUICtrlSetData ( $GUIEdit, "BeforeNavigate: " & $URL & " Flags: " & $Flags & " tgframe: " & $TargetFrameName & " Postdat: " & $PostData & " Hdrs: " & $Headers & " canc: " & $Cancel & @CRLF , "append" )
EndFunc
Func IEEvent_ProgressChange($Progress,$ProgressMax)
If $ProgressMax > 0 Then
GUICtrlSetData($GUIProg, ($Progress * 100) / $ProgressMax )
EndIf
EndFunc
Func IEEvent_StatusTextChange($Text)
GUICtrlSetData ( $GUIEdit, "IE Status text changed to: " & $Text & @CRLF , "append" )
EndFunc
Func IEEvent_PropertyChange( $szProperty)
GUICtrlSetData ( $GUIEdit, "IE Changed the value of the property: " & $szProperty & @CRLF , "append" )
EndFunc
Func IEEvent_DownloadComplete()
GUICtrlSetData ( $GUIEdit, "IE has finished a navigation operation" & @CRLF , "append" )
$odoc=objcreate("IHtmlDocument2")
$oDoc= $oIE.document
$EventDoc=ObjEvent($oDoc,"Document_","HTMLDocumentEvents2")
EndFunc
Func Document_OnMouseOver($e)
; This is an optional event function to catch non-defined events.
; The parameter contains the name of the event being called.
GUICtrlSetData ( $GUIEdit, "Doc mouseover" & @CRLF , "append" )
EndFunc
Func IEEvent_NavigateComplete($URL)
; Note: the declaration is different from the one on MSDN.
GUICtrlSetData ( $GUIEdit, "IE has finished loading URL: " & $URL & @CRLF , "append" )
EndFunc
Func IEEvent_($EventName)
; This is an optional event function to catch non-defined events.
; The parameter contains the name of the event being called.
GUICtrlSetData ( $GUIEdit, "Uncatched event: " & $EventName & @CRLF , "append" )
EndFunc
Como pudieron observar, se trabajo con los eventos:
IEEvent_BeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
IEEvent_ProgressChange($Progress,$ProgressMax)
IEEvent_StatusTextChange($Text)
IEEvent_PropertyChange( $szProperty)
IEEvent_DownloadComplete()
Document_OnMouseOver($e)
IEEvent_NavigateComplete($URL)
IEEvent_($EventName)
Espero que les halla causado un poco de curiosidad para hacerle modificaciones a este script. En el siguiente link esta una de sus publicaciones en nuestra web compañera gringa. el script lleva por titulo Spy on Internet Explorer Webbrowser y lo podemos ver aqui: http://www.autoitscript.com/forum/index ... opic=66147
Yo por mi parte me quedo la duda de como trabajar con el evento IEEvent_BeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
Cuando el GUI me muestra los resultados de este evento, busco el $PostData y el $headers, lo que me muestra es el número cabeceras pero no se como ver la información tanto recibida como enviada a traves del metodo POST.
Si alguien podria explicarmelo por favor se lo agradeceria....
Un saludo cordial a todos...