Guest Posted May 15, 2017 Report Share Posted May 15, 2017 Salut, Am o intrebare pentru voi astia care sunteti mai capabili... Cum pot modifica fieldul asta? Am gasit cod care modifica astea de sus, se foloseste de API-ul WinInet, dar nu ma duce capul cum pot sa modific doar fieldul Socks... Codul sursa este asta: Imports System Imports System.Runtime.InteropServices Public Class IEProxy Public Enum Options INTERNET_PER_CONN_FLAGS = 1 INTERNET_PER_CONN_PROXY_SERVER = 2 INTERNET_PER_CONN_PROXY_BYPASS = 3 INTERNET_PER_CONN_AUTOCONFIG_URL = 4 INTERNET_PER_CONN_AUTODISCOVERY_FLAGS = 5 INTERNET_OPTION_REFRESH = 37 INTERNET_OPTION_PER_CONNECTION_OPTION = 75 INTERNET_OPTION_SETTINGS_CHANGED = 39 PROXY_TYPE_PROXY = &H2 PROXY_TYPE_DIRECT = &H1 End Enum <StructLayout(LayoutKind.Sequential)> _ Private Class FILETIME Public dwLowDateTime As Integer Public dwHighDateTime As Integer End Class <StructLayout(LayoutKind.Explicit, Size:=12)> _ Private Structure INTERNET_PER_CONN_OPTION <FieldOffset(0)> Dim dwOption As Integer <FieldOffset(4)> Dim dwValue As Integer <FieldOffset(4)> Dim pszValue As IntPtr <FieldOffset(4)> Dim ftValue As IntPtr Public Function GetBytes() As Byte() Dim b(12) As Byte BitConverter.GetBytes(dwOption).CopyTo(b, 0) Select Case dwOption Case (Options.INTERNET_PER_CONN_FLAGS) BitConverter.GetBytes(dwValue).CopyTo(b, 4) Case (Options.INTERNET_PER_CONN_PROXY_BYPASS) BitConverter.GetBytes(pszValue.ToInt32()).CopyTo(b, 4) Case (Options.INTERNET_PER_CONN_PROXY_SERVER) BitConverter.GetBytes(pszValue.ToInt32()).CopyTo(b, 4) End Select Return (b) End Function End Structure <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _ Private Class INTERNET_PER_CONN_OPTION_LIST Public dwSize As Integer Public pszConnection As String Public dwOptionCount As Integer Public dwOptionError As Integer Public pOptions As IntPtr End Class <StructLayout(LayoutKind.Sequential)> _ Private Class INTERNET_PROXY_INFO Public dwAccessType As Integer Public lpszProxy As IntPtr Public lpszProxyBypass As IntPtr End Class Private Const ERROR_INSUFFICIENT_BUFFER = 122 Private Const INTERNET_OPTION_PROXY = 38 Private Const INTERNET_OPEN_TYPE_DIRECT = 1 <DllImport("wininet.dll")> _ Private Shared Function InternetSetOption(ByVal hInternet As IntPtr, _ ByVal dwOption As Integer, _ ByVal lpBuffer As INTERNET_PER_CONN_OPTION_LIST, _ ByVal dwBufferLength As Integer) As Boolean End Function <DllImport("kernel32.dll")> _ Private Shared Function GetLastError() As Integer End Function Public Function SetProxy(ByVal proxy_full_addr As String) As Boolean Dim bReturn As Boolean Dim list As New INTERNET_PER_CONN_OPTION_LIST Dim dwBufSize As Integer = Marshal.SizeOf(list) Dim opts(3) As INTERNET_PER_CONN_OPTION Dim opt_size As Integer = Marshal.SizeOf(opts(0)) list.dwSize = dwBufSize list.pszConnection = ControlChars.NullChar list.dwOptionCount = 3 'set flags opts(0).dwOption = Options.INTERNET_PER_CONN_FLAGS opts(0).dwValue = Options.PROXY_TYPE_DIRECT Or Options.PROXY_TYPE_PROXY 'set proxyname opts(1).dwOption = Options.INTERNET_PER_CONN_PROXY_SERVER opts(1).pszValue = Marshal.StringToHGlobalAnsi(proxy_full_addr) 'set override opts(2).dwOption = Options.INTERNET_PER_CONN_PROXY_BYPASS opts(2).pszValue = Marshal.StringToHGlobalAnsi("local") Dim b(3 * opt_size) As Byte opts(0).GetBytes().CopyTo(b, 0) opts(1).GetBytes().CopyTo(b, opt_size) opts(2).GetBytes().CopyTo(b, 2 * opt_size) Dim ptr As IntPtr = Marshal.AllocCoTaskMem(3 * opt_size) Marshal.Copy(b, 0, ptr, 3 * opt_size) list.pOptions = ptr 'Set the options on the connection bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize) If Not bReturn Then Debug.WriteLine(GetLastError) End If 'Notify existing Internet Explorer instances that the settings have changed bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_SETTINGS_CHANGED, Nothing, 0) If Not bReturn Then Debug.WriteLine(GetLastError) End If 'Flush the current IE proxy setting bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_REFRESH, Nothing, 0) If Not bReturn Then Debug.WriteLine(GetLastError) End If Marshal.FreeHGlobal(opts(1).pszValue) Marshal.FreeHGlobal(opts(2).pszValue) Marshal.FreeCoTaskMem(ptr) Return (bReturn) End Function Public Function DisableProxy() As Boolean Dim bReturn As Boolean Dim list As New INTERNET_PER_CONN_OPTION_LIST Dim dwBufSize As Integer = Marshal.SizeOf(list) Dim opts(0) As INTERNET_PER_CONN_OPTION Dim opt_size As Integer = Marshal.SizeOf(opts(0)) list.dwSize = dwBufSize list.pszConnection = ControlChars.NullChar list.dwOptionCount = 1 opts(0).dwOption = Options.INTERNET_PER_CONN_FLAGS opts(0).dwValue = Options.PROXY_TYPE_DIRECT Dim b(opt_size) As Byte opts(0).GetBytes().CopyTo(b, 0) Dim ptr As IntPtr = Marshal.AllocCoTaskMem(opt_size) Marshal.Copy(b, 0, ptr, opt_size) list.pOptions = ptr 'Set the options on the connection bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize) If Not bReturn Then Debug.WriteLine(GetLastError) End If 'Notify existing Internet Explorer instances that the settings have changed bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_SETTINGS_CHANGED, Nothing, 0) If Not bReturn Then Debug.WriteLine(GetLastError) End If 'Flush the current IE proxy setting bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_REFRESH, Nothing, 0) If Not bReturn Then Debug.WriteLine(GetLastError) End If Marshal.FreeCoTaskMem(ptr) Return (bReturn) End Function End Class sProxy.SetProxy("proxy:port") 'setezi proxy sProxy.SetProxy("proxy:port") 'opresti proxy Quote Link to comment Share on other sites More sharing options...
gigiRoman Posted May 15, 2017 Report Share Posted May 15, 2017 Nu stiu ce windows ai, dar cred ca il poti combina din registri: Software\Microsoft\Windows\CurrentVersion\Internet Settings Check this: http://stackoverflow.com/questions/6246498/how-do-i-use-a-socket-proxy-in-c-sharp-webbrowser?noredirect=1&lq=1 Quote Link to comment Share on other sites More sharing options...
Guest Posted May 15, 2017 Report Share Posted May 15, 2017 15 minutes ago, gigiRoman said: Nu stiu ce windows ai, dar cred ca il poti combina din registri: Software\Microsoft\Windows\CurrentVersion\Internet Settings Check this: http://stackoverflow.com/questions/6246498/how-do-i-use-a-socket-proxy-in-c-sharp-webbrowser?noredirect=1&lq=1 Am incercat dar tot nu reusesc sa accesez fieldul socks... Quote Link to comment Share on other sites More sharing options...
gigiRoman Posted May 15, 2017 Report Share Posted May 15, 2017 (edited) http://imgur.com/a/cGSnl In internet Settings am pus la ProxyServer valoarea socks=127.0.0.1:8040 si l-a dezbelit. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\iphlpsvc\Parameters\ProxyMgr mai si pe aici StaticProxy Edited May 15, 2017 by gigiRoman Quote Link to comment Share on other sites More sharing options...
Guest Posted May 15, 2017 Report Share Posted May 15, 2017 3 hours ago, gigiRoman said: http://imgur.com/a/cGSnl In internet Settings am pus la ProxyServer valoarea socks=127.0.0.1:8040 si l-a dezbelit. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\iphlpsvc\Parameters\ProxyMgr mai si pe aici StaticProxy Hai ca m-am prins, am sa incerc si eu sa vad care-i treaba. Mersi mult. Quote Link to comment Share on other sites More sharing options...
u0m3 Posted May 15, 2017 Report Share Posted May 15, 2017 Quote // To include server for FTP, HTTPS, and so on, use the string // (ftp=http://<ProxyServerName>:80; https=https://<ProxyServerName>:80) conform https://support.microsoft.com/en-us/help/226473/how-to-programmatically-query-and-set-proxy-settings-under-internet-explorer (ultimul exemplu din pagina). Ca atare incearca SetProxy("socks=address:port"); sau ceva in genul. Quote Link to comment Share on other sites More sharing options...
Guest Posted May 15, 2017 Report Share Posted May 15, 2017 43 minutes ago, u0m3 said: conform https://support.microsoft.com/en-us/help/226473/how-to-programmatically-query-and-set-proxy-settings-under-internet-explorer (ultimul exemplu din pagina). Ca atare incearca SetProxy("socks=address:port"); sau ceva in genul. A mers, iti multumesc din suflet. Am dat si eu peste articolul ala dar nu am fost atent sa citesc pana la capat. Quote Link to comment Share on other sites More sharing options...