Realizar función al hacer click en un input button de un WebBrowser?

Iniciado por z3nth10n, 12 Junio 2013, 18:09 PM

0 Miembros y 2 Visitantes están viendo este tema.

XresH

Estás seleccionando el WebBrowser equivocado.

Por eso los errores, es eso.

Pone el otro desde compnentes com como te indiqué mas abajo :D

EDITO: jaja electro si pensás que el va a entender como hacerlo con lo que pusiste, estás loco.

La idea es hacerlo de la forma que el comprenda como trabaja, y me decis a mi que lo estoy liando... con un simple for busco TODO en un Webbrowser, no veo necesidad de hacer MAS, me parece que no es lo que pretendemos al programar, eficacia... siempre por encima de todo :D




[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<

z3nth10n

#11
Cita de: EleKtro H@cker en 12 Junio 2013, 20:56 PM
Estás liando al pobre chaval xD

El WebBrowser es un componente por defecto, quiero decir que ya está agregado en el Toolbox, no es necesario elegirlo en los componentes ocultos del COM
(Al menos en la IDE del VS2012 que es la que usa Ikillnukes)


Eso he pensado yo... Pero es que no me aclaro xD

Cita de: XresH en 12 Junio 2013, 20:58 PM
Estás seleccionando el WebBrowser equivocado.

Por eso los errores, es eso.

Pone el otro desde compnentes com como te indiqué mas abajo :D






Como otro? LOL

Un saludo.




He estado observando, si le meto un WebBrowser.Click, con que haga clic en cualquier lado del WebBrowser dará para hacer la función no?

Interesados hablad por Discord.

XresH

en el cuadro de herramientas, clic derecho.. seleccionar elementos o elegir no me acuerdo xD vas a componentes com y buscas Webbrowser....

Te aparece otro.. no te lo digo porque si, es más sencillo que usar que el por defecto, pero si queres complicarte... es tu decisión, no me meto mas.


Saludos.
[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<

z3nth10n

#13
Y esto?

http://www.dreamincode.net/forums/topic/169683-advanced-webbrowser-contextmenu/

También tenía esto:

Código (vbnet) [Seleccionar]
Private Sub WebBrowser1_Navigating(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
   If MsgBox("You are trying to go to:" & vbCr & e.Url.ToString() & vbCr & "Cancel Navigate?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
       e.Cancel = True
   End If
End Sub


La verdad es que me estoy complicando yo solo...

Podría poner un getelementbyname y poner un name igual para todos los controles que se pudiese detectar...

Ahora si... Cuando seleccione un ModPack tendría que setearse una variable para que cogiese el name de dicho form, no se si me captais ;-)




También podría hacer que con javascript se cambiase el name del form, y hay pondría una condición si se cumple, se empezaría a realizar la función a la que estuviese indexada ese name ;-)

Interesados hablad por Discord.

Eleкtro

#14
¿Puedes centrarte en lo que te dije?:

CitarEstá claro que con los eventos del WebBrowser no vas a poder
Punto 1: Olvida el CLICK del WebBrowser.

Cita de: EleKtro H@cker en 12 Junio 2013, 20:56 PMtienes que hacerlo con los eventos del documento, el cual tiene un evento llamado CLICK ...
Punto 2: Bienvenido al evento CLICK del documento.

Citartodo lo que necesitas saber: http://pradeep1210.wordpress.com/2010/03/19/easy-way-to-add-keyboard-and-mouse-events-to-webbrowser-control/
Punto 3: Mírate el código, leelo, examinalo, fíjate en los eventos disponibles del document y usa el evento click de ese objeto.

Citartienes que handlear el evento click del documento a un sub, y en ese sub lo que debes hacer es comprobar el tipo de elemento que se ha clickado, si es un botón pues lanzas un msgbox.
Punto 4: Intenta hacerlo, con la url debería ser más que suficiente, pero bueno, una pista extra:

http://msdn.microsoft.com/en-us/library/eday44cc.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.htmlelement_events.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.activeelement.aspx










z3nth10n

#15
Al punto 4 es al que más miedo le tengo. xD




Hasta ahora he llegado a:

Código (vbnet) [Seleccionar]
Public Class frmModPacks_Web
   Private Sub frmModpacks_Web_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       Dim prueba As String = Me.WebBrowser1.Document.GetElementById("nombre").GetAttribute("Value")

       WebBrowser1.Navigate("http://ikillcraft.a0001.net/modpacks.php")
   End Sub

   Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
       Dim document As HtmlDocument = WebBrowser1.Document

       'Attach Click event handler
       AddHandler document.Body.Click, New HtmlElementEventHandler(AddressOf WebBrowser1_Click)
   End Sub

   Private Sub WebBrowser1_Click(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
       MsgBox("Hola")
   End Sub
End Class


Y ya tengo un problema el WebBrowser se carga en blanco :-\




EDITO: El problema está en:

Código (vbnet) [Seleccionar]
       Dim prueba As String = Me.WebBrowser1.Document.GetElementById("nombre").GetAttribute("Value")

No sé porqué. :-\




DUDA:

CitarWebBrowser1.Document.GetElementById("login-submit").InvokeMember("click")

Sirve de algo?

Interesados hablad por Discord.

Eleкtro

#16
Bonito copy/paste,
Sigue investigando el código de la url que te puse, te doy otra pista!:

Código (vbnet) [Seleccionar]
   Private Sub Document_Clicked(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
       MsgBox(sender.ActiveElement.TagName)
       MsgBox(sender.ActiveElement.Id)
       MsgBox(sender.ActiveElement.Name)
       MsgBox(sender.ActiveElement.OuterText)
   End Sub


PD: Donde el objeto sender es de tipo "HtmlDocument", NO de tipo HtmlElement como está en tu código de arriba.

EDITO:
Código (vbnet) [Seleccionar]
If sender.ActiveElement.TagName.tolower = "button" then...
If sender.ActiveElement.TagName.tolower = "input" then...








z3nth10n

#17
Copy/paste, anda ya xD

Si lo unico que mas he copipasteado ha sido esto:

Código (vbnet) [Seleccionar]
   Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
       Dim document As HtmlDocument = WebBrowser1.Document

       'Attach Click event handler
       AddHandler document.Body.Click, New HtmlElementEventHandler(AddressOf WebBrowser1_Clicked)
   End Sub


A ver...

Tengo esto:

Código (vbnet) [Seleccionar]
   Private Sub WebBrowser1_Clicked(ByVal sender As Object, ByVal e As System.Windows.Forms.HtmlElementEventArgs)
       MsgBox(sender.ActiveElement.Document.GetElementById("login-submit").InvokeMember("click"))
   End Sub


EDITO:

Entonces, que dejo un HtmlElement en vez de un HtmlDocument? :silbar:




EDITO:

No soy tan pro como tu... Necesito más help >:D
Por no decir que no se que es lo que significan la mitad de las cosas que hay en los codes :-\

Interesados hablad por Discord.

Eleкtro

#18
Cita de: Ikillnukes en 12 Junio 2013, 21:51 PM
no se que es lo que significan la mitad de las cosas que hay en los codes :-\

Pues ya tienes tarea de sobra, ¿no?

...En el MSDN tienes lo que significa cada propiedad y método del HtmlDocument y HtmlElement, si no sabes lo que significan o como mínimo no te puedes hacer una idea de lo que significan es porque no quieres.

Yo no soy un Pro, pero lo que no puede ser es que sin saber el puto lenguaje quieras hacer una aplicación de grandes dimensiones sin tener ni idea de como usar el lenguaje de forma básica, y que encima ya tengas media aplicación acabada donde el 90% del código es puro copy/paste del esfuerzo de los demás usuarios como Xresh o yo, y que no sepas que significa nada de lo que te mostramos ni tampoco te intereses por saber que significa, eso es lo peor de todo.

¿Estamos locos o que?, ya basta Ikillnukes, si no quieres aprender pues me parece perfecto, no aprendas, pero entonces tampoco hagas mil preguntas sobre como se hacen las cosas puesto que reálmente no quieres aprender como se hacen las cosas, quieres que te lo den hecho.

Empieza por estudiar los términos básicos de VBNET, los operadores y las cosas básicas, lo que significan las propiedades, los métodos, los eventosd, los data types, aprende a leer los malditos eventos y propiedades de los objetos y sus descripciones, que no es tán dificil joder, un miserable click te cuesta leer las descripciones, en fín aprende un poco a manejar el lenguaje por ti mismo y luego ya cuando sepas símplemente lo básico entonces puedes probar a desarrollar tu primera aplicación, una aplicaicón que la hayas hecho tú, con o sin ayuda de usuarios como nosotros, pero donde la mayor parte del código séa tuyo, una aplicación realista y no este tipo de aplicación que "estás haciendo tú"...

...Se te escapa de las manos todo lo qe te comentamos y lo que te explicamos, no estás capacitado para hacer este "launcher" aunque te proporcionemos ayuda, porque es demasiado para tu nivel de conocimientos del lenguaje, así que te sugiero que PARES, que recapacites, que empieces a aprender el maldito lenguaje desde cero, cosa que todavía no te ha dado la gana hacer, y ya para entonces cuanto estés un poco más instruido podremos ayudarte mejor.

Saludos.



EDITO:

En fín aqui cada uno empieza sin tener ni p**a idea del lenguaje, todos empezamos sin saber, pero todos los que reálmente queremos aprender nos dignamos a investigar lo que significa cada cosa.

Para serte sincero... es mi opinión, y solo mi opinión, pero yo preferiría 1.000 veces que un usuario llenase el foro de preguntas de este tipo:

"¿Me explican este código entero?", "¿Me explican que significa esto?", "¿Me explican para que sirve esto otro?", "¿Me explican como puedo mejorar este código?".

Porque al menos el tipo de pregunta denota que la persona está interesada en aprender algo.

...En cambio tu lo que haces es esperar que otras personas como por ejemplo yo te saquemos de todos los apuros, de todos. Los demás invertimos tiempo, te ayudamos (quiero decir, te lo damos hecho), pero tu sigues sin querer aprender y abusando, porque pedir es fácil.

...Si no sabes lo que significa alguna parte de un código (Como has comentado en tu último post) siempre puedes formular tu pregunta en el foro para que te expliquemos lo que significa eso que no sepas, y de esa manera APRENDAS.








SγиtαxEяяoя

#19
Crei que nunca llegaria el dia en que alguien se ponga enserio y le dijera sus verdades, no soy un experto en .NET (quiero serlo) pero trato de hacer lo posible por entender las propiedades, no solo copiar y pegar..  :-[

Como dice Xresh Entender el Codigo es lo importante

no abusar de la ayuda que te esta dando EleKtro o Xresh

Valla, y creia que tenias las capacidades de entender las cosas  :silbar: veo que me equivoque...  :-\ :-\ :(

Ahora se cambiaron los papeles... y pensar que yo era el que me sentia una molestia por preguntar :huh: :huh: ;)