【发布时间】:2011-05-14 04:27:27
【问题描述】:
我正在尝试仅为 WebBrowserControl 的当前实例设置代理。文档很糟糕,但我相信如果我调用 wininet.dll 的 InternetSetOption 将 IntPtr 句柄作为第一个参数传递给 WebBrowserControl 使用的内部浏览器,那么该方法只会影响当前实例(我可以设置一个代理使用这种方法http://msdn.microsoft.com/en-us/library/aa385114(v=VS.85).aspx)。但是,WebBrowserControl 不提供访问此句柄的任何方法。我花了几个小时在谷歌上搜索和搜索,这似乎对很多人很有帮助,但还没有人弄清楚!
WebBrowserControl 有一个名为 AxIWebBrowser2 的属性,它是我需要其句柄的 COM 对象。 MS为此使用的接口称为UnsafeNativeMethods.IWebBrowser2,并有一个名为HWND的属性,我认为这是我需要的。但是,UnsafeNativeMethods.IWebBrowser2 被标记为 internal。使用 WebBrowserControl 上的反射,我可以获得私有 AxIWebBrowser2 属性值,但它的类型显示为 System.__ComObject。我不能将此System.__ComObject 转换为IWebBrowser2,因为这是Windows.Forms 程序集的内部。
有没有办法使用 C# 访问这个 AxIWebBrowser2 对象的 HWND 属性?
【问题讨论】:
标签: c# reflection com webbrowser-control