我正在尝试仅为WebBrowserControl的当前实例设置代理。文档很糟糕,但我相信如果我调用wininet.dll
的{{1}}将IntPtr句柄传递给WebBrowserControl使用的内部浏览器作为第一个参数,那么该方法只会影响当前实例(和我可以使用此方法设置代理http://msdn.microsoft.com/en-us/library/aa385114(v=VS.85).aspx)。但是,WebBrowserControl不提供任何访问此句柄的方法。我花了几个小时搜索和搜索SO,似乎这对很多人都非常有帮助,但是没有人知道它了!
WebBrowserControl有一个名为AxIWebBrowser2的属性,它是我需要句柄的COM对象。 MS用于此的接口称为InternetSetOption
,并且具有一个名为UnsafeNativeMethods.IWebBrowser2
的属性,我认为这是我需要的。但是,HWND
标记为UnsafeNativeMethods.IWebBrowser2
。使用WebBrowserControl上的反射,我可以获取私有internal
属性值,但其上的类型显示为AxIWebBrowser2
。我无法将此System.__ComObject
转换为System.__ComObject
,因为这是IWebBrowser2
程序集的内部。
有没有办法使用C#访问此Windows.Forms
对象的HWND
属性?
答案 0 :(得分:0)
Hwnd不会给你你想要的东西。它是浏览器控件的窗口句柄。正在寻找的是WinInet HINTERNET手柄。据我所知,没有办法以编程方式访问它。您是否尝试在整个流程范围内设置该选项并将IntPtr.Zero作为HINTERNET句柄传递?
答案 1 :(得分:0)
尝试将IE配置为使用从代理池分配代理的proxy automatic configuration script(或者只更改每个Web请求的http响应中的代理)和disable the automatic proxy caching。