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:
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:
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!
Hola, y esto no te sirve?
Private Sub Command1_Click()
WebBrowser1.SetFocus
SendKeys "{tab}"
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate "http://www.google.com"
End Sub
saludos.
Cita de: seba123neo en 27 Febrero 2009, 19:51 PM
Hola, y esto no te sirve?
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..
oculto en que sentido?, en Visible = Flase o oculto a la vista del usuario poniendolo en cordenadas X,Y que no se vean...?
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
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
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
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!
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
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
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!
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
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!
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...
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
Esta claro para que lo quiere :rolleyes:
https://foro.elhacker.net/programacion_vb/realizar_un_click_en_el_webbrowser-t245327.0.html
Saludos
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!