necesito generar de alguna manera mediante un metodo o evento algo similar a lo que genera la funcion de javascript addeventlistener("submit",mifuncion()); para poder ejecutar mi codigo luego de que se genere un submit en la web en la que estoy
Interesante pregunta, se me ocurren varias maneras:
La primera y más tediosa sería utilizar la interfáz
IHTMLFormElement de la indocumentada API MSHTML y asignarle la propiedad
onsubmit, la cual imagino que aceptará un delegado a un método, ya que no encontré información alguna sobre esto en la MSDN y no inspeccioné más a fondo. Estuve tratando de castear un Web-Form (
HtmlElement) sin éxito a dicha interáz, así que desistí, pero teoricamente puedes hacer de todo.
La segunda manera sería inyectar tu propio código escrito en javascript en el documento html, pero como javascript no es lo mio ni lo intenté. Tienes cientos de ejemplos en google sobre como inyectar JS de manera administrada en un
HtmlElement.
La tercera y exitosa manera que hallé, fue investigando sobre los métodos de la class
HtmlElement, encontré el método
AttachEventHandler, que parece hacer exactamente lo que necesitas:
Un ejemplo que hice con el form de login del foro:
Public Class Form1 : Inherits Form
ReadOnly url As String = "http://foro.elhacker.net/login.html/"
Private Sub Form1_Shown() Handles MyBase.Shown
With Me.WebBrowser1
.ScriptErrorsSuppressed = True
.Navigate(Me.url)
End With
End Sub
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs) _
Handles WebBrowser1.DocumentCompleted
If (e.Url.AbsoluteUri = Me.url) Then
Dim wb As WebBrowser = DirectCast(sender, WebBrowser)
Dim el As HtmlElement = wb.Document.Forms(elementId:="frmLogin")
If (el IsNot Nothing) Then
el.AttachEventHandler("onsubmit", New EventHandler(AddressOf Me.FrmLogin_OnSubmit))
Else
Throw New Exception(message:="Element not found.")
End If
End If
End Sub
Private Sub FrmLogin_OnSubmit(ByVal sender As Object, ByVal e As EventArgs)
MessageBox.Show("Form submitted.", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
End Class
Saludos