Hier Quellcode (Teil 2):
' Set Proxy
Public Function SetConnectionOptions(ByVal conn_name As String, ByVal _
proxy_full_addr As String) As Boolean
' conn_name: active connection name. (LAN = "")
' proxy_full_addr : eg "193.28.73.241:8080"
Dim list As INTERNET_PER_CONN_OPTION_LIST
Dim bReturn As Boolean
Dim dwBufSize As Long
Dim options(0 To 2) As INTERNET_PER_CONN_OPTION
Dim abConnName() As Byte
Dim abProxyServer() As Byte
Dim abProxyBypass() As Byte
Dim proxy_bypass As String
dwBufSize = Len(list)
' Fill out list struct.
'allocate memory
list.dwSize = Len(list)
' NULL == LAN, otherwise connection name.
conn_name &= vbNullChar
abConnName = StringToByteArray(conn_name)
list.pszConnection = VarPtr(abConnName(0))
' Set three options.
list.dwOptionCount = 3
' Set flags.
options(0).dwOption = INTERNET_PER_CONN_FLAGS
options(0).dwValue1 = PROXY_TYPE_DIRECT Or PROXY_TYPE_PROXY
' Set proxy name.
options(1).dwOption = INTERNET_PER_CONN_PROXY_SERVER
proxy_full_addr &= vbNullChar
abProxyServer = StringToByteArray(proxy_full_addr)
options(1).dwValue1 = VarPtr(abProxyServer(0)) '//"http://proxy:80"
' Set proxy override.
options(2).dwOption = INTERNET_PER_CONN_PROXY_BYPASS
proxy_bypass = "local" & vbNullChar
abProxyBypass = StringToByteArray(proxy_bypass)
options(2).dwValue1 = VarPtr(abProxyBypass(0))
list.pOptions = VarPtr(options(0))
' Make sure the memory was allocated.
If (0& = list.pOptions) Then
' Return FALSE if the memory wasn't allocated.
Debug.Print("Failed to allocate memory in SetConnectionOptions()")
SetConnectionOptions = 0
End If
' Set the options on the connection.
Dim intptrStruct As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf( _
list))
bReturn = InternetSetOption(IntPtr.Zero, _
INTERNET_OPTION_PER_CONNECTION_OPTION, intptrStruct, dwBufSize)
' Free the allocated memory.
Erase options
Erase abConnName
Erase abProxyServer
Erase abProxyBypass
dwBufSize = 0
list.dwOptionCount = 0
list.dwSize = 0
list.pOptions = 0
list.pszConnection = 0
Call InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, _
IntPtr.Zero, 0)
Call InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, _
IntPtr.Zero, 0)
SetConnectionOptions = bReturn
End Function
' Disable Proxy
Public Function DisableConnectionProxy(ByVal conn_name As String) As Boolean
' conn_name: active connection name. (LAN = "")
Dim list As INTERNET_PER_CONN_OPTION_LIST
Dim bReturn As Boolean
Dim dwBufSize As Long
Dim options(0) As INTERNET_PER_CONN_OPTION
Dim abConnName() As Byte
dwBufSize = Len(list)
' Fill out list struct.
list.dwSize = Len(list)
' NULL == LAN, otherwise connectoid name.
conn_name &= vbNullChar
abConnName = StringToByteArray(conn_name)
list.pszConnection = VarPtr(abConnName(0))
' Set three options.
list.dwOptionCount = 1
' Set flags.
options(0).dwOption = INTERNET_PER_CONN_FLAGS
options(0).dwValue1 = PROXY_TYPE_DIRECT
list.pOptions = VarPtr(options(0))
' Make sure the memory was allocated.
If (0 = list.pOptions) Then
' Return FALSE if the memory wasn't allocated.
Debug.Print("Failed to allocate memory in DisableConnectionProxy()")
DisableConnectionProxy = 0
End If
' Set the options on the connection.
Dim intptrStruct As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf( _
list))
bReturn = InternetSetOption(IntPtr.Zero, _
INTERNET_OPTION_PER_CONNECTION_OPTION, intptrStruct, dwBufSize)
' Free the allocated memory.
Erase options
Erase abConnName
dwBufSize = 0
list.dwOptionCount = 0
list.dwSize = 0
list.pOptions = 0
list.pszConnection = 0
Call InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, _
IntPtr.Zero, 0)
Call InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, _
IntPtr.Zero, 0)
DisableConnectionProxy = bReturn
End Function
#End Region |