elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Problema con un WebBrowser (II) Ahora arrastrable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Problema con un WebBrowser (II) Ahora arrastrable  (Leído 8,520 veces)
z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Problema con un WebBrowser (II) Ahora arrastrable
« en: 26 Mayo 2013, 15:53 pm »

Hola, tengo mi WebBrowser que muestra una imagen con marquee infinito; quiero saber si es posible mediante este código transformarlo en el WebBrowser1 que es el control de mi WebBrowser...

Código
  1. Option Explicit On
  2. Option Strict On
  3.  
  4. Public Class Form1
  5.    ' variables
  6.    Private x As Integer
  7.    Private y As Integer
  8.    Private mover As Boolean
  9.  
  10.    Private Sub Form1_MouseDown( _
  11.        ByVal sender As Object, _
  12.        ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
  13.  
  14.        If e.Button = Windows.Forms.MouseButtons.Left Then
  15.            ' habilitar el flag
  16.            mover = True
  17.            ' guardar las coordenadas
  18.            x = e.X
  19.            y = e.Y
  20.            ' cambiar el cursor del mouse
  21.            Me.Cursor = Cursors.NoMove2D
  22.        End If
  23.    End Sub
  24.  
  25.    Private Sub Form1_MouseMove( _
  26.        ByVal sender As Object, _
  27.        ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
  28.  
  29.        If mover Then
  30.            ' establecer la nueva posición
  31.            Me.Location = New Point((Me.Left + e.X - x), (Me.Top + e.Y - y))
  32.        End If
  33.  
  34.    End Sub
  35.  
  36.    Private Sub Form1_MouseUp( _
  37.        ByVal sender As Object, _
  38.        ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
  39.        ' reestablecer
  40.        mover = False
  41.        Me.Cursor = Cursors.Default
  42.    End Sub
  43. End Class

Cual es el problema?
Lo he intentado cambiando Form1 por WebBrowser1 y lockeando el mismo WebBrowser, pero cuando voy a arrastrar el Form, lo que arrastro  es la imagen que lleva el WebBrowser dentro, es decir lo que está mostrando...

Alguna idea?

Un saludo.




He estado modificando un poco el código:

Código
  1.    Private Mover As Boolean = False
  2.    Private p_Mouse As Point = Nothing
  3.  
  4.    Private Sub WebBrowser1_MouseDown( _
  5.        ByVal sender As Object, _
  6.        ByVal e As System.Windows.Forms.MouseEventArgs) _
  7.            Handles WebBrowser1.MouseDown
  8.  
  9.        Me.Cursor = Cursors.Hand
  10.        Mover = True
  11.        ' guarda rl el x e y donde se hizo clic
  12.        p_Mouse.X = e.X
  13.        p_Mouse.Y = e.Y
  14.    End Sub
  15.  
  16.    Private Sub WebBrowser1_MouseMove( _
  17.        ByVal sender As Object, _
  18.        ByVal e As System.Windows.Forms.MouseEventArgs) _
  19.        Handles WebBrowser1.MouseMove
  20.  
  21.        If Mover Then
  22.            ' referencia al control
  23.            Dim unControl As Control = CType(sender, Control)
  24.  
  25.            ' cambiar las coordenadas
  26.            Dim p1 As Point = unControl.PointToScreen(e.Location)
  27.  
  28.            Dim p2 As Point = unControl.Parent.PointToClient(p1)
  29.  
  30.            ' asignar el left y el top - laposición del mouse donde se hizo clic
  31.            unControl.Left = p2.X - p_Mouse.X
  32.            unControl.Top = p2.Y - p_Mouse.Y
  33.  
  34.        End If
  35.  
  36.    End Sub
  37.  
  38.    Private Sub WebBrowser1_MouseUp( _
  39.        ByVal sender As Object, _
  40.        ByVal e As System.Windows.Forms.MouseEventArgs) Handles WebBrowser1.MouseUp
  41.        ' cambiar el  cursors
  42.        Me.Cursor = Cursors.Default
  43.        ' flag para mover el control
  44.        Mover = False
  45.    End Sub

Pero me sale este error, y no se porqué:



He estado buscando información, pero no he encontrado nada... Soy muy noob, o soy retarded xD

 :-\ :-\



Lo mismo pasa si uso este code:

Código
  1.    Dim oPoint As New System.Drawing.Point
  2.    Dim posicionX, posicionY As Integer
  3.  
  4.    Private Sub WebBrowser1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles WebBrowser1.MouseDown
  5.        If e.Button = MouseButtons.Left Then
  6.            'resta la posición del control que manda a la posición de la forma...
  7.            posicionX = Control.MousePosition.X - Me.Location.X
  8.            'centro del control.
  9.            posicionY = Control.MousePosition.Y - Me.Location.Y
  10.        End If
  11.    End Sub
  12.  
  13.    Private Sub WebBrowser1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles WebBrowser1.MouseMove
  14.        If e.Button = MouseButtons.Left Then
  15.            oPoint = Control.MousePosition
  16.            oPoint.X -= (posicionX)
  17.            oPoint.Y -= (posicionY)
  18.            Me.Location = oPoint
  19.            My.Settings.Save()
  20.        End If
  21.    End Sub


« Última modificación: 26 Mayo 2013, 17:43 pm por Seazoux » En línea


Interesados hablad por Discord.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Problema con un WebBrowser (II) Ahora arrastrable
« Respuesta #1 en: 26 Mayo 2013, 18:29 pm »

Me gustaría citarte algo que te dije, pero para lo que me va a servir...

Lee los eventos disponibles del webbrowser, ¿Ves alguno que se llame MouseMove, MouseDown, o MouseUp?, No Seazoux, no todos los controles tienen los mismos eventos.

Es más, con haber invertido 10 segundos para leer el mensaje de la excepción, habrías leido lo mismo que te acabo de explicar.

Código
  1.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  2.        WebBrowser1.Navigate("http://google.com")
  3.    End Sub
  4.  
  5.    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
  6.        Dim document As HtmlDocument = WebBrowser1.Document
  7.        AddHandler document.Body.MouseDown, New HtmlElementEventHandler(AddressOf WebBrowser1_MouseDown)
  8.    End Sub
  9.  
  10.    Private Sub WebBrowser1_MouseDown(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
  11.        If e.MouseButtonsPressed = Windows.Forms.MouseButtons.Left Then
  12.            MsgBox("Botón izquiero presionado")
  13.        End If
  14.    End Sub


« Última modificación: 26 Mayo 2013, 18:34 pm por EleKtro H@cker » En línea



z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: Problema con un WebBrowser (II) Ahora arrastrable
« Respuesta #2 en: 26 Mayo 2013, 18:37 pm »

Hombre soy muy newbie y esos errores son nuevos, así que no se que hacer al respecto... Seguramente, la próxima vez no tenga que preguntar nada.
PD: De los errores se aprende...

Otro error:

Citar
Error   2   Method 'Private Sub WebBrowser1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs)' does not have a signature compatible with delegate 'Delegate Sub HtmlElementEventHandler(sender As Object, e As System.Windows.Forms.HtmlElementEventArgs)'.   C:\Users\Alvaro\Documents\IkillLauncher\IkillLauncher\frmMain.vb   31   83   IkillLauncher

A mi el error que me pongas me suena a chino, habrá que ir aprendiendo de donde salen. Soy primerizo...

PD: Voy a intentar entender algo:

does not have a signature compatible with delegate

no tiene una firma compatible con el delegado

Quien es el delegado? xD

PD: Soy muy lioso...

Un saludo.  ;)



Ahhhh Vale... xD No se a lo que se refería cuando decía que El evento MouseMove no es válido para este control ActiveX



Citar
Examine the corresponding parameters and, if they are present, return types to determine which pair is not compatible.
« Última modificación: 26 Mayo 2013, 18:52 pm por Seazoux » En línea


Interesados hablad por Discord.
kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: Problema con un WebBrowser (II) Ahora arrastrable
« Respuesta #3 en: 26 Mayo 2013, 18:49 pm »

Te vendría bien leer acerca del Framework de .NET. En tu error se ve claramente que la firma del delegado y la del método no coinciden.

El delegado lo utilizas al asociar el evento MouseDown al método WebBrowser1_MouseDown. ¿Qué significa éso? Qué estás asociando una acción sobre un método mediante un delegado, que no es más que un puntero seguro a una función (con puntero seguro me refiero a un puntero a bajo nivel utilizado para invocar funciones).

Vamos que cuando se produce ese evento tu llamas a dicha función. Asegúrate de que las firmas de ambos coinciden y espero vayas adquiriendo conocimiento.

Saludos!
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: Problema con un WebBrowser (II) Ahora arrastrable
« Respuesta #4 en: 26 Mayo 2013, 18:54 pm »

Y como hago que las firmas coincidan? xD

Que son las firmas?

Lo del puntero seguro, el delegado, no me ha quedado muy claro...
Esto es mas difícil que vete tu a saber que cosa... xD



Esto es epico, si pongo este trozo de code:

Código:
  
    Private Sub WebBrowser1_MouseDown(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
        If e.MouseButtonsPressed = Windows.Forms.MouseButtons.Left Then
            MsgBox("Botón izquiero presionado")
        End If

No me sale ningún error

:(
« Última modificación: 26 Mayo 2013, 18:57 pm por Seazoux » En línea


Interesados hablad por Discord.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Problema con un WebBrowser (II) Ahora arrastrable
« Respuesta #5 en: 26 Mayo 2013, 18:55 pm »

Perdona si te ha sentado un poco mal, pero me ha molestado bastante porque solo con leer ya se sabe lo que pasa, no hay que ser un experto en el tema, y yo no lo soy.

Saludos.
En línea



Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Problema con un WebBrowser (II) Ahora arrastrable
« Respuesta #6 en: 26 Mayo 2013, 18:58 pm »

Y como hago que las firmas coincidan? xD

Que son las firmas?

Lo del puntero seguro, el delegado, no me ha quedado muy claro...
Esto es mas difícil que vete tu a saber que cosa... xD

Aunque no manejo mucho sobre delegados, si no recuerdo mal cuando sucede un evento se crea un delegado oculto automáticamente, y puedes acceder a el con un nombre especial dentro del sub, que no recuerdo como era el nombre.

Lo de "las firmas" se refiere al contenido que he marcado en rojo:

    Private Sub WebBrowser1_MouseDown(ByVal sender As Object, ByVal e As HtmlElementEventArgs)

   End Sub

...si tu cambias HtmlElementEventArgs por MouseEventArgs, no es compatible la firma, el evento no existe.
En línea



z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: Problema con un WebBrowser (II) Ahora arrastrable
« Respuesta #7 en: 26 Mayo 2013, 19:00 pm »

No me ha molestado, es más tu llevas razón... Soy fallos muy tontos los míos (bueno, en realidad, yo no me doy cuenta de que está mal, por que soy primerizo bablablablalblalbla), además de siempre como tu sabes, me ha gustado el código ya hecho...  :silbar:



Tengo que empollar mucho xD

Mirad lo que he hecho:

Código
  1.    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
  2.        Dim document As HtmlDocument = WebBrowser1.Document
  3.        AddHandler document.Body.MouseDown, New HtmlElementEventHandler(AddressOf WebBrowser1_MouseDown)
  4.        AddHandler document.Body.MouseUp, New HtmlElementEventHandler(AddressOf WebBrowser1_MouseUp)
  5.        AddHandler document.Body.MouseMove, New HtmlElementEventHandler(AddressOf WebBrowser1_MouseMove)
  6.    End Sub
  7.  
  8.    Private Sub WebBrowser1_MouseDown(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
  9.        If e.MouseButtonsPressed = Windows.Forms.MouseButtons.Left Then
  10.            MsgBox("Botón izquiero presionado")
  11.        End If
  12.    End Sub
  13.  
  14.    Private Sub WebBrowser1_MouseUp(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
  15.        If e.MouseButtonsPressed = Windows.Forms.MouseButtons.Right Then
  16.            MsgBox("Botón izquiero presionado")
  17.        End If
  18.    End Sub
  19.  
  20.    Private Sub WebBrowser1_MouseMove(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
  21.        If e.MouseButtonsPressed = Windows.Forms.MouseButtons.Middle Then
  22.            MsgBox("Botón izquiero presionado")
  23.        End If
  24.    End Sub

No me sale ningún error hasta que pulso F5, y volvemos a lo mismo de antes.

http://i.imgur.com/d0kYE1V.png



LELELELELELELELEL!

He quitado este código, y ya si va...

Código
  1.    Private Sub WebBrowser1_MouseDown( _
  2.        ByVal sender As Object, _
  3.        ByVal e As System.Windows.Forms.MouseEventArgs) _
  4.            Handles WebBrowser1.MouseDown
  5.  
  6.        Me.Cursor = Cursors.Hand
  7.        Mover = True
  8.        ' guarda rl el x e y donde se hizo clic
  9.        p_Mouse.X = e.X
  10.        p_Mouse.Y = e.Y
  11.    End Sub
  12.  
  13.    Private Sub WebBrowser1_MouseMove( _
  14.        ByVal sender As Object, _
  15.        ByVal e As System.Windows.Forms.MouseEventArgs) _
  16.        Handles WebBrowser1.MouseMove
  17.  
  18.        If Mover Then
  19.            ' referencia al control
  20.            Dim unControl As Control = CType(sender, Control)
  21.  
  22.            ' cambiar las coordenadas
  23.            Dim p1 As Point = unControl.PointToScreen(e.Location)
  24.  
  25.            Dim p2 As Point = unControl.Parent.PointToClient(p1)
  26.  
  27.            ' asignar el left y el top - laposición del mouse donde se hizo clic
  28.            unControl.Left = p2.X - p_Mouse.X
  29.            unControl.Top = p2.Y - p_Mouse.Y
  30.  
  31.        End If
  32.  
  33.    End Sub
  34.  
  35.    Private Sub WebBrowser1_MouseUp( _
  36.        ByVal sender As Object, _
  37.        ByVal e As System.Windows.Forms.MouseEventArgs) Handles WebBrowser1.MouseUp
  38.        ' cambiar el  cursors
  39.        Me.Cursor = Cursors.Default
  40.        ' flag para mover el control
  41.        Mover = False
  42.    End Sub

Y si me salta en MouseMove, es porque algo hice mal... ;)

Voy a ver...



Estoy editando, con multiples comandos sacados de "por ahí"

Código
  1.    Private Sub WebBrowser1_MouseDown(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
  2.        If e.MouseButtonsPressed = MouseButtons.Left Then MoveForm = True : MoveForm_Mouse_Position = e.Location
  3.    End Sub
  4.  
  5.    Private Sub WebBrowser1_MouseUp(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
  6.        If MoveForm Then Me.Location = Me.Location + e.Location - MoveForm_Mouse_Position
  7.    End Sub
  8.  
  9.    Private Sub WebBrowser1_MouseMove(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
  10.        If e.Button = MouseButtons.Left Then MoveForm = False
  11.    End Sub

Pero tengo varios errores:

Citar
Error   2   'Location' is not a member of 'System.Windows.Forms.HtmlElementEventArgs'.   C:\Users\Alvaro\Documents\IkillLauncher\IkillLauncher\frmMain.vb   40   103   IkillLauncher

Citar
Error   4   'Button' is not a member of 'System.Windows.Forms.HtmlElementEventArgs'.   C:\Users\Alvaro\Documents\IkillLauncher\IkillLauncher\frmMain.vb   48   12   IkillLauncher

Si entiendo lo que pone, pero no se como solucionarlo

Segun tu, el EventArgs no es compatible con el Snippet que tu me distes y a su vez e.* no es compatible con HtmlElementEventArgs, que hago?
« Última modificación: 26 Mayo 2013, 19:19 pm por Seazoux » En línea


Interesados hablad por Discord.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Problema con un WebBrowser (II) Ahora arrastrable
« Respuesta #8 en: 26 Mayo 2013, 19:20 pm »

@Seazoux
Dale a "copy exception to clipboard", y así lees la versión extendida, y ves lo que ocurre.

De todas formas quizás los tiros puedan ir por aquí:

Código
  1. AddHandler document.Body.KeyPress, New HtmlElementEventHandler(AddressOf WebBrowser1_KeyPress)
  2.  
  3. Private Sub WebBrowser1_KeyPress(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
  4.    If e.KeyPressedCode = Keys.A Then
  5.        MsgBox("Tecla "A" pulsada")
  6.    End If
  7. End Sub

No he conseguido que funcione con las teclas "F", imagino que poque son especiales del control y... bueno, no sé como se hará la verdad.

Saludos
En línea



z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: Problema con un WebBrowser (II) Ahora arrastrable
« Respuesta #9 en: 26 Mayo 2013, 19:43 pm »

Cuando copio el error solo me sale Copy, y no me sale lo que tu dices... e.e

No se a lo mejor esta en otro lado...





Yo me he perdido, que puedo hacer al respecto, sobre el código...

Nuevo código más simplón:

Código
  1.    <System.Runtime.InteropServices.DllImport("user32.DLL", EntryPoint:="ReleaseCapture")> _
  2.    Private Shared Sub ReleaseCapture()
  3.    End Sub
  4.  
  5.    <System.Runtime.InteropServices.DllImport("user32.DLL", EntryPoint:="SendMessage")> _
  6.    Private Shared Sub SendMessage( _
  7.            ByVal hWnd As System.IntPtr, ByVal wMsg As Integer, _
  8.            ByVal wParam As Integer, ByVal lParam As Integer _
  9.            )
  10.    End Sub
  11.  
  12.    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
  13.        Dim document As HtmlDocument = WebBrowser1.Document
  14.        AddHandler document.Body.MouseDown, New HtmlElementEventHandler(AddressOf WebBrowser1_MouseDown)
  15.        AddHandler document.Body.MouseUp, New HtmlElementEventHandler(AddressOf WebBrowser1_MouseUp)
  16.        AddHandler document.Body.MouseMove, New HtmlElementEventHandler(AddressOf WebBrowser1_MouseMove)
  17.    End Sub
  18.  
  19.    Private Sub moverForm()
  20.        ReleaseCapture()
  21.        SendMessage(Me.Handle, WM_SYSCOMMAND, MOUSE_MOVE, 0)
  22.    End Sub
  23.  
  24.    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
  25.                Handles MyBase.MouseMove, WebBrowser1.MouseMove
  26.        If e.Button = MouseButtons.Left Then
  27.            moverForm()
  28.        End If
  29.    End Sub

Como siempre HtmlElementEventHandler y MouseEventArgs con conflictos... XD
« Última modificación: 26 Mayo 2013, 20:13 pm por Seazoux » En línea


Interesados hablad por Discord.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con cdigo en WebBrowser 2005
Programación Visual Basic
Ian~Shadow 0 1,122 Último mensaje 11 Junio 2007, 15:54 pm
por Ian~Shadow
[Problema] WebBrowser no anda bien...
Programación Visual Basic
agus0 0 1,739 Último mensaje 9 Noviembre 2009, 00:38 am
por agus0
Super duda! que pasa ahora con los dvd que antes 4,7 y ahora 4,3 ?
Dudas Generales
sauces 9 6,292 Último mensaje 15 Junio 2010, 14:34 pm
por Akai
Problema con WebBrowser
.NET (C#, VB.NET, ASP)
TEMPLAR 5 6,222 Último mensaje 21 Enero 2012, 04:07 am
por jhon1_23
Eliminar Post :)
Programación Visual Basic
iNETFRUIT 5 3,171 Último mensaje 31 Diciembre 2010, 16:07 pm
por skapunky
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines