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