Option Explicit Private Type INTERNET_PROXY_INFO dwAccessType As Long lpszProxy As Long lpszProxyBypass As Long End Type Private Const INTERNET_OPTION_PROXY = 38 Private Declare Function InternetSetOption Lib "wininet.dll" Alias "InternetSetOptionA" (ByVal hInternet As Long, ByVal dwOption As Long, ByRef lpBuffer As Any, ByVal dwBufferLength As Long) As Long Private Declare Function InternetQueryOption Lib "wininet.dll" Alias "InternetQueryOptionA" (ByVal hInternet As Long, ByVal dwOption As Long, ByRef lpBuffer As Any, ByRef dwBufferLength As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef pDest As Any, ByRef pSource As Any, ByVal Length As Long) Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Long) As Long Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Any) As Long Public Function GetProxyAddressAndPort(Optional ProxyType As String) As String Dim ProxyInfo As INTERNET_PROXY_INFO Dim arrBuffer() As Byte Dim strAddress As String Dim strBypass As String ReDim arrBuffer(0 To 4095) InternetQueryOption 0&, INTERNET_OPTION_PROXY, arrBuffer(0), UBound(arrBuffer) - LBound(arrBuffer) + 1 CopyMemory ProxyInfo, arrBuffer(0), LenB(ProxyInfo) strAddress = VBA.Space(lstrlen(ProxyInfo.lpszProxy)) lstrcpy ByVal strAddress, ProxyInfo.lpszProxy ''''不使用代理的地址 strBypass strBypass = VBA.Space(lstrlen(ProxyInfo.lpszProxyBypass)) lstrcpy ByVal strBypass, ProxyInfo.lpszProxyBypass ''''GetProxyAddressAndPort = VBA.Trim(VBA.Replace(strAddress, " ", ";")) '''' & ";" & VBA.Replace(strBypass, " ", ";")) GetProxyAddressAndPort = VBA.Trim(VBA.Replace(strAddress, " ", ";") & ";" & VBA.Replace(strBypass, " ", ";")) Dim ProxyArray() As String ProxyArray = Split(GetProxyAddressAndPort, ";") Dim i As Integer For i = LBound(ProxyArray) To UBound(ProxyArray) If ProxyArray(i) Like "*" & ProxyType & "=*" Then GetProxyAddressAndPort = VBA.Replace(ProxyArray(i), ProxyType & "=", "") Exit For End If Next i End Function
Private Sub Command1_Click() MsgBox GetProxyAddressAndPort("http") MsgBox GetProxyAddressAndPort("ftp") MsgBox GetProxyAddressAndPort("gopher") End Sub
''''编程配置 IE 的 "代理服务器" 要用到 InternetSetOption ''''一个例子下载: ''''http://www.vbip.com/forum/files/webbrowser_proxy.zip
|