Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Asr Software en Julio 02, 2012, 05:11:47 pm
-
necesito saber como puedo hacer para abrir el internet explorer o mozilla sin tener que poner el nombre de usuario y contraseña que me pide el proxy para autentificarme
-
En Internet Explorer...
¿Ya configuraste el proxy?
¿Te lo pide, porque no lo tiene?
¿O te lo pide, aunque ya lo tiene configurado?
-
disculpa no me explique bien, lo que necesito es abrir una pagina de internet, dentro de un form de visual basic y que no me pida autentificarme, necesito pasar el nombre de usuario y la pasword desde el programa de visual basic
-
Te entiendo, pero sigue habiendo muchas formas de interpretar tu último mensaje...
Con tres palabras en google, encontras: webbrowser proxy vb6
Link:
http://www.google.com.ar/webhp?sourceid=chrome-instant&ie=UTF-8#hl=es-419&output=search&sclient=psy-ab&q=webbrowser%20proxy%20vb6&oq=&gs_l=&pbx=1&fp=108cb0991fac95b3&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&biw=1366&bih=621
Es cosa que busques cual encaja en tu caso...
Un saludo,
Hugo
-
Hugo, hermano, gracias por ayudarme, en realidad es verdad que no me he explicado bien, ya yo tengo el codigo para abrir la pagina web dentro de un form en internet, lo unico que cuando la habro el proxy me pide que me autentifique con mi nombre de ususario y password, eso es lo que quiero hacer, poner esos datos dentro del programa para que el proxy los tome de ahí, la password y el nombre siempre van a ser los mismos por lo que los dejo fijos dentro del programa y así no hace falta escribirlos.
-
Poné una captura de pantalla, para tratar de identificar que es lo que estás viendo...
Existen muchas formas que el browser te pida autentificarte...
Luego seguismos...
Un saludo,
Hugo
-
(http://s10.postimage.org/m556907yd/Dibujo.jpg) (http://postimage.org/image/m556907yd/)
esto es lo que pone cuando habres el programa, esa es la autentificación que pide el proxy para la conexión a internet, espero que me puedas entender mejor ahora,
un saludo Abel
-
claro, es la pantalla de login, la misma que aparece cuando entras a la configuracion de un router cualquiera.
para hacer eso yo hace mucho habia hecho un codigo para "autologuearse automaticamente". esto lo haces tranquilo con apis como SendMessage, FindWindow y FindWindowsEx para las ventanas hijas.
aca te pongo un ejemplo que habia hecho para la gente que no tiene en claro todavia como usar este tema de las apis para encontrar ventanas a traves del nombre de clase de las mismas, un ejemplo simple con el notepad de windows, ya que algunos lo hacen con SendKeys pero es no es optimo y puede fallar.
El tema es sacar los nombres de la ventana(nombres de clase) y asi asignarles el texto directamente sin enviar pulsaciones ni nada, para hacer eso necesitas saber los nombres de los controles y de la ventana y eso lo podes averiguar con la aplicacion que viene con visual basic llamada Spy++, o cualquiera similar.
por ejemplo, supongamos que yo quiero escribir automaticamente en el Bloc de Notas de windows sabiendo el nombre de clase del control que te permite escribir adentro, aca te hago una captura de como saque el nombre de la ventana del bloc de notas para escribir con el Spy++:
este es el nombre de clase de la ventana padre, llamada Notepad:
(http://img528.imageshack.us/img528/4203/dibujo2eh5.png)
este es el nombre del control textbox dentro de la ventana padre, llamado Edit:
(http://img237.imageshack.us/img237/2262/dibujouz2.png)
para saber los datos de la ventana, tenes que arrastrar el "iconito del spy++" sobre una ventana y te va diciendo las partes que la forman, en este caso fijate que esta seleccionado el area de escritura del bloc de notas y al lado en la ventana estan los datos.
el handle (Hwnd en visual basic) es el numero(Long) que le asigna windows a cada ventana, es como si fuera el numero que identifica esa ventana, sabiendo eso, podes hacer un monton de cosas a la ventana, cerrarla, moverla, resizarla, cambiar valores,etc.
el Class en el Spy++ es el "nombre de clase" del control, o sea cada control tiene su nombre.
ahora fijate con este codigo como escribo en el bloc de notas, usando unas funciones api's.
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessageSTRING Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Declare Function SendMessageLONG Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_SETTEXT = &HC
Private Sub Form_Load()
Dim a As Long
Dim b As Long
a = FindWindow("Notepad", vbNullString)
If a <> 0 Then
b = FindWindowEx(a, 0&, "Edit", vbNullString)
SendMessageSTRING b, WM_SETTEXT, 256, "Holaaaaaaaaaaaa"
Else
MsgBox "abri el notepad primero", vbExclamation
End If
End Sub
ahora para el login del internet explorer la cosa se pone mas complicada, ya que hay como un marco o frame que esta oculto a la vista, pero con el Spy++ lo podes ver se llama syscredential , y te explico algo, cuando queres acceder a un control de una ventana de windows como estoy haciendo yo aca, por ejemplo suponete que tenes un textbox comun, pero este esta metido dentro de un marco, pues no podes acceder al primer control directamente, primero tenes que acceder al Hwnd del marco y despues al del control hijo o sea el textbox.
el textbox del usuario es el mas complicado, pues esta metido, primero y principal dentro de la ventana entera que se llama #32770,despues esta el marco llamado syscredential, despues esta el combobox padre llamado comboboxex32,despues el combobox tiene un textbox llamado combobox y despues recien ahi accedes al textbox llamado edit.
el codigo:
Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessageSTRING Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Declare Function SendMessageLONG Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_SETTEXT = &HC
Private Const KEYEVENTF_KEYUP = &H2
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const VK_ENTER = &HD
Private Sub Form_Load()
WebBrowser1.Navigate ("192.168.1.1") 'aca pones la direccion del router
Timer1.Enabled = True
Timer1.Interval = 500
End Sub
Sub Pulsar_Tecla(ByVal Tecla As Integer)
Call keybd_event(Tecla, 0, 0, 0)
Call keybd_event(Tecla, 0, KEYEVENTF_KEYUP, 0)
End Sub
Private Sub Timer1_Timer()
Dim a As Long, b As Long, c As Long, d As Long, f As Long, g As Long
a = FindWindow("#32770", vbNullString) 'la ventana padre
b = FindWindowEx(a, 0&, "syscredential", vbNullString) 'el marco oculto
c = FindWindowEx(b, 0&, "comboboxex32", vbNullString) 'el combo padre
d = FindWindowEx(c, 0&, "combobox", vbNullString) 'el combo contenedor
f = FindWindowEx(d, 0&, "edit", vbNullString) 'el textbox del usuario
g = FindWindowEx(b, 0&, "edit", vbNullString) 'el textbox del password
Call SendMessageSTRING(g, WM_SETTEXT, 256, "password") 'pones la contraseña
Call SendMessageSTRING(f, WM_SETTEXT, 256, "usuario") 'pones el usuario
Call Pulsar_Tecla(VK_ENTER) 'Enter para aceptar los datos
Timer1.Enabled = False
End Sub
este codigo es funcional en windows XP y los demas sistemas, pero en Windows 7 cambia el nombre de clase del contenedor.
saludos.
-
Gracias hermano, no sabes de cuanta ayuda has sido y cuanto he aprendido, no conocia mucho sobre este tema, yo no me he metido mucho en esto de las web y en realidad me cuesta hacerlo, antes tenia mas time pero ahora estoy algo complicado, gracias de nuevop, me sirvió mucho, la idea de hacerlo mediante send key no me gustaba, puede traer errores y la clave puede quedar al descubierto.
nos vemos por ahi.
un abrazo,
Abel
-
seba123neo, me fue de gran utilidad el codigo que me distes, me funciona bien, ahora cuando utilizo el winhack o winspector spy no encuentro el comboboxex32, no lo veo, reviso la ventana completa y nada, estoy tratando de hacer lo mismo para windows 2000, pero no me sale, parece que hay algo que no logro captar con el winhack o winspector, si tienes tiempo y como hacerlo te pido que me ayudes, lo necesito para windows 2000 y para seven.
Un saludo