اريد تغير بسيط ع الكود ... - e-coder - 29-09-18
بسم الله الرحمان الرحيم
اريد تغير الكود برنامج عبارة عن تغير بروكسي المتصفح ولكن اريدة تغيرة لتغير ايبي الجهاز كلة وليس بروكسي المتصفح
الكود
PHP كود :
Imports System.Runtime.InteropServices Imports System
Public Class Class1 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
PHP كود :
Dim clsProxy As New Class1 If clsProxy.SetProxy(HuraTextBox1.Text) Then MessageBox.Show("Proxy successfully enabled.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information) Else MessageBox.Show("Error enabling proxy.", "Failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End If
PHP كود :
Dim clsProxy As New Class1 If clsProxy.DisableProxy Then MessageBox.Show("Proxy successfully disabled.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information) Else MessageBox.Show("Error disabling proxy.", "Failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End If
RE: اريد تغير بسيط ع الكود ... - عبدالله الدوسري - 29-09-18
ابحث عن
How to Configure network settings programmatically
[attachment=19683]
لا أعرف كيف تتم ولكن أعلم أنها من تتحكم في كل Requset يخرج من الجهاز إلى الإنترنت
أي أن إعدادات البروكسي ستكون عامة على الجهاز وليس المتصفح
كما في الـ VPN
RE: اريد تغير بسيط ع الكود ... - elgokr - 29-09-18
مرحباً اخى e-coder
فى البداية هل تقصد بفكر تغيير اى بى الجهاز
بحيث ان يكون رؤية الجهاز على شبكة الانترت العامة وليست الداخلية
باى بى مختلف عن الاى بى الخاص بك اذا كان نعم
فهنا الكود الذى لديك هو الكود الصحيح
لان لو نقول ان جهازك يحصل على اى بى 192.168.1.102 مثلاً
فالاى بى ده هو عبارة عن اى بى داخلى اى داخل الشبكة المتصلة بالروتر فقط
لكن ما يظهر بين العامة هو الاى بى الخاص بالروتر المزود من خدمة الانترنت
فلو الروتر حصل على اى بى مثلاً 5.64.221.143
فالاى بى ده هو يعنى انت واخوك و... الخ من يستخدم الانترنت على نفس الراوتر
طيب لو كان الامر المطلوب هو تغيير الاى بى للجهاز بحيث الرؤية داخل الشبكة
فمثلاً جهازك يحمل اى بى 192.168.1.102 وتريد تغييره الى 192.168.1.110 مثلاً
لديك طريقتين الطريقة الاولى من خلال الرابط التالى وهو استخدام الكود بهذا الرد
طيب لو كان الامر بحاجة لكود بسيط وسهل
يمكنك تنفيذ الامر من خلال كود Netsh الذى ينفذ فى Command
ومن خلال تنفيذ التالى
لاتمام الاى بى يدوى مع ادخال الاى بى الذى يناسبك
كود :
Process.Start("netsh interface ip set address "؟؟؟؟؟" static 192.168.1.110 255.255.255.0 192.168.1.1 1")
مكان علامة ؟؟؟؟ سيتم وضع اسم Ethernet حيب السم الذى لديك انظر للصورة الخاصة بالاخ
عبدالله الدوسري فى الرد الخاص به لتوضح الصورة كاملاً
طيب الان لو حابب تعمل زر اخر يقوم بجعل الجهاز باخذ اى بى تلقائي
كل ما عليك استخدام السطر التالى
كود :
System.Diagonistic.Process.Start("netsh interface ip set address "؟؟؟؟" dhcp")
مع تغيير علامة ؟؟؟؟ كما تم شرحه بالاعلى
تحياتى لك
وتمنياتى لك التوفيق
RE: اريد تغير بسيط ع الكود ... - عبد الرؤوف - 29-09-18
(29-09-18, 02:33 AM)e-coder كتب : بسم الله الرحمان الرحيم
اريد تغير الكود برنامج عبارة عن تغير بروكسي المتصفح ولكن اريدة تغيرة لتغير ايبي الجهاز كلة وليس بروكسي المتصفح
الكود
يمكن تكود قصدك الي بالموضوع هذا
|