Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Webbrowser每个控件都有不同的代理_C#_.net_Vb.net_Proxy_Webbrowser Control - Fatal编程技术网

C# Webbrowser每个控件都有不同的代理

C# Webbrowser每个控件都有不同的代理,c#,.net,vb.net,proxy,webbrowser-control,C#,.net,Vb.net,Proxy,Webbrowser Control,我想知道是否可以为应用程序中的每个不同webbrowser设置代理(相同的过程) 我搜索了很多代码,通过修改注册表和另一个进程特定的代理来更改整个代理系统。但我希望同一进程中的每个webbrowser都有不同的代理 例如:WebBrowser1代理-->95.188.106.78:3128 WebBrowser 2代理-->89.218.160.162:9090 WebBrowser 3代理-->78.39.68.145:3128等 或者,如果直接使用WebBrowser是不可能的,那么其他人能

我想知道是否可以为应用程序中的每个不同webbrowser设置代理(相同的过程)

我搜索了很多代码,通过修改注册表和另一个进程特定的代理来更改整个代理系统。但我希望同一进程中的每个webbrowser都有不同的代理

例如:WebBrowser1代理-->95.188.106.78:3128

WebBrowser 2代理-->89.218.160.162:9090

WebBrowser 3代理-->78.39.68.145:3128等

或者,如果直接使用WebBrowser是不可能的,那么其他人能否建议我可以使用什么来实现这一点(不是webrequests,我只希望使用浏览器,通过它我可以加载所有数据,用户可以与它交互,但可以使用不同的代理),比如使用geckofx或webkit?但是我不知道它们是否可能

看一看——对不起,它是VB.NET

它的基本意思是你可以通过修改InernetSetOption来编辑IE DLL来配置它。希望这有帮助


是另一个可能有帮助的链接

不幸的是,您无法设置每个insnance的代理。甚至不是每个应用程序—它是全局的。如果你把它变成一个.net应用程序,它也会影响IE

下面是更改代理的完整代码

创建一个带有按钮“B_Get”、“B_Set”和“B_Disable”的“Form1”,然后粘贴此代码

它应该对你有用。我使用这个应用程序作为我构建的自动代理循环器的概念证明

根据应用程序的需要,您可以切换它,然后再切换回来。请注意,它将影响internet explorer

要验证此功能是否正常工作,请检查internet explorer。您可能需要打开/关闭IE的“选项”对话框,但不需要重新启动浏览器

这也会影响运行中的.NET应用程序-如果您在您的程序运行时运行我的程序,您将能够更改您的程序正在使用的代理

Imports Microsoft.Win32
Imports System.Runtime.InteropServices



Public Class Form1

    <DllImport("wininet.dll")>
    Public Shared Function InternetSetOption(hInternet As IntPtr, dwOption As Integer, lpBuffer As IntPtr, dwBufferLength As Integer) As Boolean
    End Function

    Public Const INTERNET_OPTION_SETTINGS_CHANGED As Integer = 39
    Public Const INTERNET_OPTION_REFRESH As Integer = 37


    'This function is what is called after editing the registry - this causes internet explorer to update its proxy even if it is already open.
    'It also effects the web browser control in any VB.net application that is running.
    Public Sub globalProxy_apply()
        Dim settingsReturn As Boolean = False
        Dim refreshReturn As Boolean = False
        settingsReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0)
        If Not settingsReturn Then
            MessageBox.Show("Error 001: Line ""InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0)"" failed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
        refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0)
        If Not refreshReturn Then
            MessageBox.Show("Error 002: Line ""InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0)"" failed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub

    Public Function globalProxy_IsProxyEnabled() As Boolean
        Try
            Dim Regs As RegistryKey = Registry.CurrentUser.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\Internet Settings", RegistryKeyPermissionCheck.ReadWriteSubTree)
            If Regs.GetValue("ProxyEnable") <> Nothing Then
                If Regs.GetValue("ProxyEnable").ToString() = "0" Then
                    Return False
                Else
                    Return True
                End If
            Else
                Return False
            End If
        Catch ex As Exception
            MessageBox.Show("Error 01X: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return False
        End Try
    End Function

    Public Function globalProxy_GetProxyServer() As String
        Try
            Dim Regs As RegistryKey = Registry.CurrentUser.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\Internet Settings", RegistryKeyPermissionCheck.ReadWriteSubTree)
            If Regs.GetValue("ProxyServer") <> Nothing Then
                Return Regs.GetValue("ProxyServer").ToString()
            Else
                Return ""
            End If
        Catch ex As Exception
            MessageBox.Show("Error 02X: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return ""
        End Try
    End Function

    Public Sub globalProxy_DisableProxy()
        Dim regkey As RegistryKey
        Try
            regkey = Registry.CurrentUser.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\Internet Settings")
            regkey.SetValue("ProxyEnable", False, RegistryValueKind.DWord)
            regkey.Close()
        Catch ex As Exception
            MessageBox.Show("Error 03X: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        globalProxy_apply()
    End Sub

    Public Sub globalProxy_SetProxy(ByVal ServerName As String)
        Dim regkey As RegistryKey
        Try
            regkey = Registry.CurrentUser.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\Internet Settings")
            regkey.SetValue("ProxyServer", ServerName, RegistryValueKind.Unknown)
            regkey.SetValue("ProxyEnable", True, RegistryValueKind.DWord)
            regkey.Close()
        Catch ex As Exception
            MessageBox.Show("Error 04X: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        globalProxy_apply()
    End Sub

    Private Sub B_Set_Click(sender As System.Object, e As System.EventArgs) Handles B_Set.Click
        If TextBox1.Text = "" Then
            globalProxy_DisableProxy()
        Else
            globalProxy_SetProxy(TextBox1.Text)
        End If

    End Sub

    Private Sub B_Disable_Click(sender As System.Object, e As System.EventArgs) Handles B_Disable.Click
        globalProxy_DisableProxy()
    End Sub

    Private Sub B_Get_Click(sender As System.Object, e As System.EventArgs) Handles B_Get.Click
        If globalProxy_IsProxyEnabled() Then
            TextBox1.Text = globalProxy_GetProxyServer()
        Else
            TextBox1.Text = ""
        End If
    End Sub

End Class
导入Microsoft.Win32
导入System.Runtime.InteropServices
公开课表格1
公共共享函数InternetSetOption(hInternet作为IntPtr,dwOption作为Integer,lpBuffer作为IntPtr,dwBufferLength作为Integer)作为布尔值
端函数
公用常量INTERNET\u选项\u设置\u更改为整数=39
公用常量INTERNET\u选项\u刷新为整数=37
'此函数是在编辑注册表后调用的-这会导致internet explorer更新其代理,即使它已打开。
'它还影响正在运行的任何VB.net应用程序中的web浏览器控件。
公共子全球代理申请()
尺寸设置返回为布尔值=假
返回为布尔值=False
settingsReturn=InternetSetOption(IntPtr.Zero,互联网选项设置更改,IntPtr.Zero,0)
如果未设置,则返回
MessageBox.Show(“错误001:Line”“InternetSetOption(IntPtr.Zero,INTERNET选项设置更改,IntPtr.Zero,0)”“失败”,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error)
如果结束
refreshReturn=InternetSetOption(IntPtr.Zero,INTERNET\u OPTION\u REFRESH,IntPtr.Zero,0)
如果没有,请返回
MessageBox.Show(“错误002:Line”“InternetSetOption(IntPtr.Zero,INTERNET\u OPTION\u刷新,IntPtr.Zero,0)”“失败”,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error)
如果结束
端接头
公共函数globalProxy_IsProxyEnabled()作为布尔值
尝试
Dim Regs As RegistryKey=Registry.CurrentUser.CreateSubKey(“软件\Microsoft\Windows\CurrentVersion\Internet设置”,RegistryKeyPermissionCheck.ReadWriteSubTree)
如果Regs.GetValue(“ProxyEnable”)为空,则
如果Regs.GetValue(“ProxyEnable”).ToString()为“0”,则
返回错误
其他的
返回真值
如果结束
其他的
返回错误
如果结束
特例
MessageBox.Show(“错误01X:+例如消息,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error)
返回错误
结束尝试
端函数
公共函数globalProxy\u GetProxyServer()作为字符串
尝试
Dim Regs As RegistryKey=Registry.CurrentUser.CreateSubKey(“软件\Microsoft\Windows\CurrentVersion\Internet设置”,RegistryKeyPermissionCheck.ReadWriteSubTree)
如果Regs.GetValue(“ProxyServer”)为空,则
返回Regs.GetValue(“ProxyServer”).ToString()
其他的
返回“”
如果结束
特例
MessageBox.Show(“错误02X:+例如消息,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error)
返回“”
结束尝试
端函数
公共子全局Proxy_DisableProxy()
Dim regkey作为注册表项
尝试
regkey=Registry.CurrentUser.CreateSubKey(“软件\Microsoft\Windows\CurrentVersion\Internet设置”)
SetValue(“ProxyEnable”,False,RegistryValueKind.DWord)
regkey.Close()
特例
MessageBox.Show(“错误03X:+ex.消息,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error)
结束尝试
globalProxy_apply()
端接头
公共子全局Proxy_SetProxy(ByVal ServerName作为字符串)
Dim regkey作为注册表项
尝试
regkey=Registry.CurrentUser.CreateSubKey(“软件\Microsoft\Windows\CurrentVersion\Internet设置”)
regkey.SetValue(“ProxyServer”、ServerName、RegistryValueKind.Unknown)
SetValue(“ProxyEnable”,True,RegistryValueKind.DWord)
regkey.Close()
特例
MessageBox.Show(“错误04X:+例如消息,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error)
结束尝试
globalProxy_apply()
端接头
私有子B_集\单击(发送方作为System.Object,e作为System.EventArgs)处理B_集。单击
如果TextBox1.Text=