Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: demoniox12 en 27 Febrero 2009, 19:27 PM

Título: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: demoniox12 en 27 Febrero 2009, 19:27 PM
Buenas...

He estado intentando realizar tabs para seleccionar otros links mediante sendmessage.. pero no me ha funcionado.. hago el click y no realiza ninguna accion.. dejo el source a ver si alguien encuentra el error..

Form:
Código (vb) [Seleccionar]
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Long
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Private Const VK_TAB = &H9

Private Sub Command1_Click()
Dim hwnd As Long
hwnd = GetBrowserHandle(Me.hwnd)
SendMessage hwnd, WM_KEYDOWN, VK_TAB, 0&
'SendMessage hWnd, WM_KEYUP, VK_TAB, 0&
End Sub

Private Sub Form_Load()
WebBrowser1.Navigate "http://www.google.com"
End Sub


Modulo:
Código (vb) [Seleccionar]
      Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" ( _
          ByVal hwnd As Long, _
          ByVal lpClassName As String, _
          ByVal nMaxCount As Long _
      ) As Long

      Private Declare Function EnumChildWindows Lib "user32.dll" ( _
          ByVal hWndParent As Long, _
          ByVal lpEnumFunc As Long, _
          ByVal lParam As Long _
      ) As Long

      Private hWndIE As Long


      Private Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
          Dim sClassName As String
          sClassName = String(255, vbNullChar)
          Call GetClassName(hwnd, sClassName, 255)
          sClassName = Left$(sClassName, InStr(sClassName, vbNullChar) - 1)
          If sClassName <> "Internet Explorer_Server" Then
              EnumChildProc = 1
          Else
              hWndIE = hwnd
          End If
      End Function
       
      Public Function GetBrowserHandle(ByVal hWndParent) As Long
          hWndIE = 0
          Call EnumChildWindows(hWndParent, AddressOf EnumChildProc, 1)
          GetBrowserHandle = hWndIE
      End Function




Encuentra el handle y todo del webbrowser pero no se porke no realiza los tabs en la pagina..

Saludos!
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: seba123neo en 27 Febrero 2009, 19:51 PM
Hola, y esto no te sirve?

Código (vb) [Seleccionar]
Private Sub Command1_Click()
    WebBrowser1.SetFocus
    SendKeys "{tab}"
End Sub

Private Sub Form_Load()
    WebBrowser1.Navigate "http://www.google.com"
End Sub


saludos.
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: demoniox12 en 27 Febrero 2009, 20:13 PM
Cita de: seba123neo en 27 Febrero 2009, 19:51 PM
Hola, y esto no te sirve?

Código (vb) [Seleccionar]
Private Sub Command1_Click()
    WebBrowser1.SetFocus
    SendKeys "{tab}"
End Sub

Private Sub Form_Load()
    WebBrowser1.Navigate "http://www.google.com"
End Sub


saludos.

no.. porke el webbrowser estara oculto..

Saludos y gracias igual..
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: seba123neo en 27 Febrero 2009, 20:16 PM
oculto en que sentido?, en Visible = Flase o oculto a la vista del usuario poniendolo en cordenadas X,Y que no se vean...?
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: demoniox12 en 27 Febrero 2009, 20:21 PM
Cita de: seba123neo en 27 Febrero 2009, 20:16 PM
oculto en que sentido?, en Visible = Flase o oculto a la vista del usuario poniendolo en cordenadas X,Y que no se vean...?

Visible = False
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: Dessa en 27 Febrero 2009, 20:40 PM
Hola, no se si correspònde SendMessage para este caso pero me parece que estas mandando mal el mensaje


Private Const WM_CHAR = &H102
Private Const WM_BACK = &H8
Private Const WM_TAB = &H9


Call SendMessage(hwnd, WM_CHAR, VK_TAB, 0&)


Saludos
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: byway en 27 Febrero 2009, 20:42 PM
Cita de: demoniox12 en 27 Febrero 2009, 20:21 PM
Cita de: seba123neo en 27 Febrero 2009, 20:16 PM
oculto en que sentido?, en Visible = Flase o oculto a la vista del usuario poniendolo en cordenadas X,Y que no se vean...?

Visible = False

segun tengo entendido un webnrowser en :

Visible = False ... no realiza ninguna accion (no navega), corriganme si me equivoco
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: demoniox12 en 27 Febrero 2009, 20:44 PM
Cita de: Dessa en 27 Febrero 2009, 20:40 PM
Hola, no se si correspònde SendMessage para este caso pero me parece que estas mandando mal el mensaje


Private Const WM_CHAR = &H102
Private Const WM_BACK = &H8
Private Const WM_TAB = &H9


Call SendMessage(hwnd, WM_CHAR, VK_TAB, 0&)


Saludos


Tira error de desbordamiento..

Cita de: byway en 27 Febrero 2009, 20:42 PM
Cita de: demoniox12 en 27 Febrero 2009, 20:21 PM
Cita de: seba123neo en 27 Febrero 2009, 20:16 PM
oculto en que sentido?, en Visible = Flase o oculto a la vista del usuario poniendolo en cordenadas X,Y que no se vean...?

Visible = False

segun tengo entendido un webnrowser en :

Visible = False ... no realiza ninguna accion (no navega), corriganme si me equivoco

el Form es el que estara invisible..


Saludos!
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: Novlucker en 27 Febrero 2009, 20:50 PM
Navega, no se ve, y por ende no se puede utilizar sendkey  :rolleyes:
Creo que es más sencillo hacer lo que buscas sin tener que estar haciendo eso  :-X

Saludos
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: Dessa en 27 Febrero 2009, 20:52 PM
SenMessage está mal declarado

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Saludos
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: demoniox12 en 27 Febrero 2009, 20:55 PM
Cita de: Dessa en 27 Febrero 2009, 20:52 PM
SenMessage está mal declarado

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Saludos


Ahora no tira desbordamiento pero no realiza ninguna accion.

Saludos!
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: Dessa en 27 Febrero 2009, 20:59 PM
No estaras llegando al hwnd  que corresponde ya que así se manda un Tab con SenMessage

Call SendMessage(hwnd, WM_CHAR, WM_TAB , 0&)

Saludos


Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: demoniox12 en 27 Febrero 2009, 21:01 PM
Cita de: Dessa en 27 Febrero 2009, 20:59 PM
No estaras llegando al hwnd  que corresponde ya que así se manda un Tab con SenMessage

Call SendMessage(hwnd, WM_CHAR, WM_TAB , 0&)

Saludos




Si  estoy llegando,  lo comprobe con el WinID me da el mismo hwnd que el que me devuelve la funcion GetBrowserHandle... 

Saludos!
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: seba123neo en 27 Febrero 2009, 21:02 PM
porque no listas todos los links de la web...en realidad tendrias que comentar para que realmente necesitas hacer eso...para ver si hay otra forma...
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: Dessa en 27 Febrero 2009, 21:08 PM
Cita de: Dessa en 27 Febrero 2009, 20:40 PM
Hola, no se si correspònde SendMessage para este caso pero me parece que estas mandando mal el mensaje


Private Const WM_CHAR = &H102
Private Const WM_BACK = &H8
Private Const WM_TAB = &H9


Call SendMessage(hwnd, WM_CHAR, VK_TAB, 0&)


Saludos


Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: Novlucker en 27 Febrero 2009, 21:12 PM
Esta claro para que lo quiere  :rolleyes:

https://foro.elhacker.net/programacion_vb/realizar_un_click_en_el_webbrowser-t245327.0.html

Saludos
Título: Re: Realizar tabs en un webbrowser mediante SendMessage
Publicado por: demoniox12 en 27 Febrero 2009, 21:16 PM
Cita de: seba123neo en 27 Febrero 2009, 21:02 PM
porque no listas todos los links de la web...en realidad tendrias que comentar para que realmente necesitas hacer eso...para ver si hay otra forma...

El fin es clickear una publicidad de adsense..

por medio de document.frames......links.click es inalcanzable ya que da acceso denegado..

por medio de focus y click tmb da acceso denegado..

por medio de winsock no lo he logrado.. obtengo todo el javascript pero no logro descifrarlo esta muy pero muy complejo...

entonces lo que quiero es hacer tabs hasta llegar a la publicidad y ahi mandar un mouse_down

Saludos!