Guest Posted May 15, 2017 Report 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
gigiRoman Posted May 15, 2017 Report 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
Guest Posted May 15, 2017 Report 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
gigiRoman Posted May 15, 2017 Report 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
Guest Posted May 15, 2017 Report 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
u0m3 Posted May 15, 2017 Report 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
Guest Posted May 15, 2017 Report 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