Proxy VB6

Berikut penggunakan proxy dengan menggunakan visual basic 6.0, pada case ini browser internet explorer yang akan kita gunakan sebagai proxynya. Tidak lain dan tidak bukan lagi control browser Microsoft internet controls yang akan kita gunakan pada ujungnya. Dengan sentuhan API (application programming interface) dan registry kita dapat membuatnya, COME'ON!!!!


Simpan kode berikut pada module:

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

'Untuk mengatur Proxy

Public Function SetConnectionOptions(ByVal conn_name As String, ByVal proxy_full_addr As String) As Boolean

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)
list.dwSize = Len(list)
abConnName() = StrConv(conn_name & vbNullChar, vbFromUnicode)
list.pszConnection = VarPtr(abConnName(0))
list.dwOptionCount = 3
options(0).dwOption = INTERNET_PER_CONN_FLAGS
options(0).dwValue1 = PROXY_TYPE_DIRECT Or PROXY_TYPE_PROXY
options(1).dwOption = INTERNET_PER_CONN_PROXY_SERVER
abProxyServer() = StrConv(proxy_full_addr & vbNullChar, vbFromUnicode)
options(1).dwValue1 = VarPtr(abProxyServer(0)) '//"http://proxy:80"
options(2).dwOption = INTERNET_PER_CONN_PROXY_BYPASS
abProxyBypass() = StrConv("local" & vbNullChar, vbFromUnicode)
options(2).dwValue1 = VarPtr(abProxyBypass(0))
list.pOptions = VarPtr(options(0))

If (0& = list.pOptions) Then
Debug.Print "Failed to allocate memory in SetConnectionOptions()"
SetConnectionOptions = 0
End If
bReturn = InternetSetOption(0, INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize)
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


Public Function DisableConnectionProxy(ByVal conn_name As String) As Boolean
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)
list.dwSize = Len(list)
abConnName() = StrConv(conn_name & vbNullChar, vbFromUnicode)
list.pszConnection = VarPtr(abConnName(0))
list.dwOptionCount = 1
options(0).dwOption = INTERNET_PER_CONN_FLAGS
options(0).dwValue1 = PROXY_TYPE_DIRECT
list.pOptions = VarPtr(options(0))
If (0 = list.pOptions) Then
Debug.Print "Failed to allocate memory in DisableConnectionProxy()"
DisableConnectionProxy = 0
End If

bReturn = InternetSetOption(0, INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize)
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


Public Sub WriteToRegistry(strFolder As String, strString, Optional strRegType As String = "REG_SZ")
    On Error Resume Next
    Dim b As Object
    Set b = CreateObject("wscript.shell")
    b.RegWrite strFolder, strString, strRegType
End Sub

Penggunaan pada form

WriteToRegistry "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", 1, "REG_DWORD"

Call SetConnectionOptions(conn_name, "<proxy_server_anda>")
Call WebBrowser1.Navigate("<situs_anda.com>")


0 comments:

Post a Comment