Realizar tabs en un webbrowser mediante SendMessage

Iniciado por demoniox12, 27 Febrero 2009, 19:27 PM

0 Miembros y 1 Visitante están viendo este tema.

demoniox12

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!
By Demoniox

seba123neo

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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

demoniox12

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..
By Demoniox

seba123neo

oculto en que sentido?, en Visible = Flase o oculto a la vista del usuario poniendolo en cordenadas X,Y que no se vean...?
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

demoniox12

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
By Demoniox

Dessa

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
Adrian Desanti

byway

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

demoniox12

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!
By Demoniox

Novlucker

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
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Dessa

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
Adrian Desanti