VB + API 获取 IE 的 "代理服务器" 配制

.Net 专栏收录该内容
44 篇文章 0 订阅

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

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
VB 超强API浏览器,带源码。   在VB.net、C#中, 使用 DllImport 属性调用 Windows API, 请先使用 Imports 或 using 导入 System.Runtime.InteropServices 以简化声明引用。 对于Any类型转换,VB.NET/C# 中不支持Any类型。如果你要把VB6式API声明添加为VB.NET/C#支持声明方式, 请使用特定类型。在本软件中对于有Any类型函数添加时会提示你选择一种类型。在 Visual Basic 6.0 中, Any类型变量通常用于传递是字符串或 Null 变量, 您可以通过声明两种(一种使用长型,一种使用字符串)来替换这种 Visual Basic 6.0 用法。 易语言函数、类型、常数声明是放在不同地方,不用分别复制, 只需全部复制, 任意粘贴到Dll命令、常量表、自定义数据类型声明处, 易语言会自动分开几种类型。 在声明C#结构体时如果结果体中有数值数组类型, 结构体中这个成员会被声明成不安全代码, 若要正确编译代码 ,请在单击VS.net中“项目”菜单“属性”菜单项, 在出来选项卡上选择“生成”, 选中那个选项卡中“允许不安全代码”项复选项, 这样才能正确编译。 VB.net与C#中不支持类型(结构体)某个变量同时是定长字符串与数组, 两者只能选其一。请自行计算出数组大小或用代码处理定长字符串方式进行改写。   VB.net与C#中类型(结构体)如果有数组那么这个类型不能声明为类。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值