Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Hugo en Abril 29, 2011, 12:02:01 am
-
Hola Leandro y amigos del foro,
Buenas noches a todos, espero que estén bien...
Tengo una duda que no logro resolver...
¿Cómo obtengo los datos del proxy desde VB6?
Mi intensión es no tocar el registro y obtener esos datos (ip, puerto, etc) de apis... pero buscando en google, no encontré alguna api que haga eso... también busqué aquí... y tampoco...
Alguien sabe como hacer eso?
Desde ya muchas gracias,
Un saludo,
Hugo
-
Que datos quieres conseguir?
Es un proxy a traves del cual te conectas?
si es que sabes su IP y quieres mas informacion sobre esta tienes esta web:
http://www.ip-db.com/ (http://www.ip-db.com/)
Yo hice hace tiempo un programa para sacar datos de una IP (localizacion mas que nada) en VB conectandome a esta web a traves del programa.
no se si es lo que buscas.
Saludos
-
Hola Juan,
Muy buenos días y gracias por la respuesta...
En realidad, lo que quiero es acceder a la configuración del proxy de Internet Explorer...
Por ejemplo, ver la siguiente imagen...
(http://www.subirimagen.org/host/images/345screen_config_proxy.png)
Sé que se puede acceder a esos datos, a travéz del registro de Windows, pero me gustaría saber como es para acceder a esos datos por las APIs, seguramente existe... pero no se como es... eso que he buscado; quizas sea porque no se el "termino" correcto para encontrarlo fácilmente...
Alguien sabe como acceder a esos datos desde APIs?
Muchas graciasssss!!!
Un saludo,
Hugo
-
El problema es que no sabes donde estan en el registro o que no sabes como leer entradas del registro?
Puede que esten aqui:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer
-
Hola Juan,
Nuevamente gracias, te agradezco de corazón tu aporte...
Existe alguna forma de acceder a estos datos, pero desde APIs??
Esa es mi pregunta...
Pero... ¿Porque pregunto esto?
Porque según entiendo, si tu programa intenta acceder al registro de Windows, necesitará más "privilegios de acceso" que los "normales" y entonces... puede que esto se transforme en un problema para los usuarios no experimentados...
Por eso, me gustaría encontrar la forma, si es que existe... de acceder a ESOS datos, pero... desde APIs
Desde ya muchas gracias,
Un saludo,
Hugo
-
Ok ya te entendí.
He buscado y he encontrado esto:
Esta clase te dice entre otras cosas si estas conectado a través de un proxy:
Módulo de clase Red Internet (http://www.recursosvisualbasic.com.ar/htm/utilidades-codigo-fuente/modulo-clase-red-internet.htm)
Y luego en el API Guide he visto:
InternetGetConnectedState
InternetGetConnectedStateEx
y InternetOpen (que creo que es la que mas te puede ayudar) pero no se si delo todo.
Bueno esto es lo que he podido buscar.
Saludos y suerte.
-
Nuevamente gracias Juan,
La causa de mi búsqueda me ha llevado también a estas páginas, pero no es exactamente lo que estoy buscando...
En cuanto lo encuentre lo publicaré aquí para que quede la solución...
Un gran saludo,
Hugo
--
PD: Quizás si explico un poco que estoy haciendo, se podría poner más luz en este asunto...
Estoy descargando archivos de Internet... y estoy usando Microsoft WinHTTP Services...
El siguiente es una parte del código...
El agregado es el dato de Proxy, que el usuario debe setear a mano, pero justamente, yo quiero automatizarlo y quiero que ese dato lo obtenga de la configuración de, por ejemplo, Internet Explorer...
Set HTTPDownload = New WinHttp.WinHttpRequest
IsDownloading = True
'La siguiente es la línea que quiero mejorar...
HTTPDownload.SetProxy frmPrincipal.txtSetProxy.Text, frmPrincipal.txtProxy.Text, frmPrincipal.txtNoProxy.Text
HTTPDownload.Option(WinHttpRequestOption_EnableHttp1_1) = True
HTTPDownload.Option(WinHttpRequestOption_EnableRedirects) = True
HTTPDownload.Open "GET", StrUrl, True
'HTTPDownload.SetRequestHeader "Accept-Language", "en-us"
HTTPDownload.SetRequestHeader "User-Agent", scUserAgent
HTTPDownload.SetRequestHeader "Accept", "*/*"
GRACIAS, GRACIAS y GRACIAS por la ayuda...
Un saludo!!
-
En esta paginas he encontrado como acceder a los datos del proxy
en esta usando vbscript
http://blogs.technet.com/b/heyscriptingguy/archive/2005/05/19/how-can-i-switch-between-using-a-proxy-server-and-not-using-a-proxy-server.aspx (http://blogs.technet.com/b/heyscriptingguy/archive/2005/05/19/how-can-i-switch-between-using-a-proxy-server-and-not-using-a-proxy-server.aspx)
en esta usando un archivo .bat
http://foro.ethek.com/viewtopic.php?f=21&t=15645&start=0&sid=4638945dc30ea36bf6df2a69c0eebdb1 (http://foro.ethek.com/viewtopic.php?f=21&t=15645&start=0&sid=4638945dc30ea36bf6df2a69c0eebdb1)
y en esta usando la api de wininet.dll InternetQueryOption
http://www.vbmonster.com/Uwe/Forum.aspx/vb-networks/333/Proxy-settings (http://www.vbmonster.com/Uwe/Forum.aspx/vb-networks/333/Proxy-settings)
en vb6, leyendo el registro de windows. se podria usar esto
'Constantes para acceder a las diferentes ramas del registro
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_CURRENT_CONFIG = &H80000005
Dim Wmi As Object
Dim ret As Long
Dim Name_Computadora As String, Path_Clave As String, Nombre_Valor As String, Valor As String
'Computadora local
Name_Computadora = "."
Set Wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
& Name_Computadora & "\root\default:StdRegProv")
' Ruta de la clave a leer
Path_Clave = "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"
'////////////////////////////////////////////////////////////////////////////////////////
' Servidores proxy HTTP, Seguro, FTP, Socks
Nombre_Valor = "ProxyServer"
ret = Wmi.GetStringValue(HKEY_LOCAL_MACHINE, Path_Clave, Nombre_Valor, Valor)
MsgBox " Servidores proxy HTTP, Seguro, FTP, Socks: " & Valor, vbInformation
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
' proxy excepciones
Nombre_Valor = "ProxyOverride"
ret = Wmi.GetStringValue(HKEY_LOCAL_MACHINE, Path_Clave, Nombre_Valor, Valor)
MsgBox " proxy excepciones: " & Valor, vbInformation
'////////////////////////////////////////////////////////////////////////////////////////
Set Wmi = Nothing
-
Hola Lolabyte,
Muy buenos días y gracias por el aporte...
Imaginaba que había una solución así...
Probé el siguiente código y me funcionó, tal como lo necesitaba...
Private Const INTERNET_OPTION_PROXY As Long = 38
Private Declare Function InternetQueryOption Lib "wininet.dll" _
Alias "InternetQueryOptionA" (ByVal hInternet As Long, _
ByVal dwOption As Long, _
ByRef lpBuffer As Any, _
ByRef lpdwBufferLength As Long) As Long
Private Sub Command1_Click()
' dimensiono un buffer grande a sufficienza per
' ricevere i dati di risposta
Dim buffer As String * 4096
Dim nullPos As Long
Dim cbBuffer As Long
Dim ret As Long
cbBuffer = Len(buffer)
ret = InternetQueryOption(0&, INTERNET_OPTION_PROXY, _
ByVal buffer, cbBuffer)
If (ret) Then
nullPos = InStr(13, buffer, vbNullChar, vbBinaryCompare)
If (nullPos) Then
Debug.Print "Proxy and Port = " & _
Mid$(buffer, 13, nullPos - 13)
Else
Debug.Print "Proxy and Port = " & _
Mid$(buffer, 13)
End If
Else
MsgBox "Errore " & CStr(Err.LastDllError), vbCritical
End If
End Sub
Mil gracias a todos, de corazón...
Y aquí esta la solución... una vez más!
Un saludo,
Hugo