Вернуться   Компьютерный форум > Компьютеры > Программы > Программирование
 
 
Опции темы
Старый 27.05.2011, 17:09   #1 (ссылка)
Новичок
 
Регистрация: 21.05.2011
Сообщений: 3
Репутация: 0
Unhappy Visual Basic, webbrowser и прокси

Всем Доброго времени суток! Образовалась не большая проблемка с прокси в webbrowser'е, хотел сделать поддрежку прокси в своей проге, поддержка удалась, но вот, как сбросить настройки прокси я не могу понять, может кто поможет, что бы было понятнее о чем речь выкладываю код:

Это из declarations:
Код:
Const ERROR_INSUFFICIENT_BUFFER = 122
Const INTERNET_OPTION_PROXY = 38
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_OPTION_PROXY_SETTINGS_CHANGED = 95

Private Type INTERNET_PROXY_INFO
dwAccessType As Long
lpszProxy As String
lpszProxyBypass As String
End Type


Private Declare Function UrlMkSetSessionOption Lib "urlmon.dll" (ByVal dwOption As Long, ByRef pBuffer As Any, ByVal dwBufferLength As Long, ByVal dwReserved As Long) As Long
А это уже и сам код, который устанавливает прокси:
Код:
Private Function fSetProxy()
    Dim proxyInfo As INTERNET_PROXY_INFO

    With proxyInfo
        .dwAccessType = INTERNET_OPEN_TYPE_PROXY
        .lpszProxy = Text1.Text
        .lpszProxyBypass = Text2.Text
    End With

    UrlMkSetSessionOption INTERNET_OPTION_PROXY, proxyInfo, LenB(proxyInfo), 0&
    End Function

Последний раз редактировалось ExPlayer; 27.05.2011 в 17:28.
ExPlayer вне форума  
Старый 28.05.2011, 00:22   #2 (ссылка)
Новичок
 
Регистрация: 21.05.2011
Сообщений: 3
Репутация: 0
По умолчанию

Сделал, по-другому! Выкладываю код (мало ли, может кому-нибудь пригодится):

Код:
'Код модуля
Option Explicit
Private Type INTERNET_PER_CONN_OPTION
    dwOption As Long
    dwValue1 As Long
    dwValue2 As Long
End Type
Private Type INTERNET_PER_CONN_OPTION_LIST
    dwSize As Long
    pszConnection As Long
    dwOptionCount As Long
    dwOptionError As Long
    pOptions As Long
End Type
Private Const INTERNET_PER_CONN_FLAGS As Long = 1
Private Const INTERNET_PER_CONN_PROXY_SERVER As Long = 2
Private Const INTERNET_PER_CONN_PROXY_BYPASS As Long = 3
Private Const PROXY_TYPE_DIRECT As Long = &H1
Private Const PROXY_TYPE_PROXY As Long = &H2
Private Const INTERNET_OPTION_REFRESH As Long = 37
Private Const INTERNET_OPTION_SETTINGS_CHANGED As Long = 39
Private Const INTERNET_OPTION_PER_CONNECTION_OPTION As Long = 75
Private Declare Function InternetSetOption _
        Lib "wininet.dll" Alias "InternetSetOptionA" ( _
        ByVal hInternet As Long, ByVal dwOption As Long, _
        lpBuffer As Any, ByVal dwBufferLength As Long) As Long
' 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
   
    dwBufSize = Len(list)
   
    ' Fill out list struct.
    list.dwSize = Len(list)
   
    ' NULL == LAN, otherwise connection name.
    abConnName() = StrConv(conn_name & vbNullChar, vbFromUnicode)
    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
    abProxyServer() = StrConv(proxy_full_addr & vbNullChar, vbFromUnicode)
    options(1).dwValue1 = VarPtr(abProxyServer(0))  '//"http://proxy:80"
    ' Set proxy override.
    options(2).dwOption = INTERNET_PER_CONN_PROXY_BYPASS
    abProxyBypass() = StrConv("local" & vbNullChar, vbFromUnicode)
    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.
    bReturn = InternetSetOption(0, INTERNET_OPTION_PER_CONNECTION_OPTION, list, 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(0, INTERNET_OPTION_SETTINGS_CHANGED, ByVal 0&, 0)
    Call InternetSetOption(0, INTERNET_OPTION_REFRESH, ByVal 0&, 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.
    abConnName() = StrConv(conn_name & vbNullChar, vbFromUnicode)
    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.
    bReturn = InternetSetOption(0, INTERNET_OPTION_PER_CONNECTION_OPTION, list, 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(0, INTERNET_OPTION_SETTINGS_CHANGED, ByVal 0&, 0)
    Call InternetSetOption(0, INTERNET_OPTION_REFRESH, ByVal 0&, 0)
    DisableConnectionProxy = bReturn
End Function
ExPlayer вне форума  
Старый 28.05.2011, 00:23   #3 (ссылка)
Новичок
 
Регистрация: 21.05.2011
Сообщений: 3
Репутация: 0
По умолчанию

Код:
'Код активации прокси(уже на форме):

Private Sub Command1_Click()
Dim conn_name As String, proxy_full_addr As String
    conn_name = ""
    proxy_full_addr = Text1.Text
    Call SetConnectionOptions(conn_name, proxy_full_addr)
MsgBox "Настройки прокси были применены успешно", vbInformation, Me.Caption
End Sub
Код:
'Код деактивации прокси(так же на форме):

Private Sub Command3_Click()
Dim conn_name As String
Call DisableConnectionProxy(conn_name)
End Sub
ExPlayer вне форума  
Ads
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
visual basic -=vasiliy=- Программирование 1 27.05.2011 14:08
Подскажите по visual basic akhalex38 Программирование 0 01.03.2011 23:00
Не могу сохранить компоненты в панли компонентов в программе Visual Basic 6 Михаил Белоголов Программирование 1 01.03.2011 22:57
Обработка массивов в Visual Basic Demented Программирование 0 23.02.2011 19:57
Скачать Visual Basic Джон. Программирование 2 22.01.2011 23:16
Подскажите где скачать visual basic 6.0 русскую версию Brakus Программирование 5 16.05.2010 14:43
Решение 1-ой задачи на Visual Basic (Срочно) МаксОн Программирование 0 22.03.2010 17:47
Проблемы с установкой Visual Basic 2008 solanval Windows XP 1 29.09.2009 20:52
Задачи по Visual Basic Sport666 Программирование 4 30.05.2009 19:30
visual basic igor058021 Программы 5 15.05.2009 19:43
Решение задач на Pascal и Visual Basic Максат Программирование 0 21.03.2009 14:07
3D в Visual Basic 6.0 1223 Программирование 1 28.11.2007 14:09


Текущее время: 17:17. Часовой пояс GMT +4. Powered by vBulletin® Version 5.8.9
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.