C#WPF Web浏览器重置代理

时间:2018-09-04 20:44:15

标签: c# wpf proxy webbrowser-control

我正在尝试设置WebBrowser控件的代理。当我第一次设置它们时,它可以很好地工作。当我尝试重置它们并重新导航时,它会失败。

这是代码

[DllImport("wininet.dll", SetLastError = true)]
private static extern bool InternetSetOption(
    IntPtr dwL,
    int dw,
    IntPtr dwB,
    int dwBL);
private const int INTERNET_OPTION_END_BROWSER_SESSION = 42;
public struct SIPI
{
    public int dwAT;
    public IntPtr pro;
    public IntPtr prB;
}

private void UseProxy(string Proxy)
{
    const int PO = 38;
    const int POI = 3;

    SIPI ISI = default(SIPI);
    ISI.dwAT = POI;
    ISI.pro = Marshal.StringToHGlobalAnsi(Proxy);
    ISI.prB = Marshal.StringToHGlobalAnsi("local");

    IntPtr INS = Marshal.AllocCoTaskMem(Marshal.SizeOf(ISI));
    Marshal.StructureToPtr(ISI, INS, true);
    bool iR = InternetSetOption(IntPtr.Zero, PO, INS, Marshal.SizeOf(ISI));
}

这是用法

UseProxy(ProxyList[r]);
web1.Navigate(urlToNavigate);
...
do some magic
...
UseProxy(ProxyList[r]);
web1.Navigate(urlToNavigate);
...stuck here

我尝试使用InternetSetOption将代理设置为0,然后再尝试设置不同的代理,但结果相同。

0 个答案:

没有答案