工作中有一次在使用webBrowser的访问一个frame的时候,出现了没有权限的异常,在查询多个资料后,发现了一个解决方法:
using mshtml;
using SHDocVw;
using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace TradeAutomation
{
public static class CrossFrameIE
{
private static FieldInfo ShimManager = typeof(HtmlWindow).GetField("shimManager", BindingFlags.NonPublic | BindingFlags.Instance);
private static ConstructorInfo HtmlDocumentCtor = typeof(HtmlDocument).GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance)[0];
public static HtmlDocument GetDocument(this HtmlWindow window)
{
var rawDocument = (window.DomWindow as IHTMLWindow2).GetDocumentFromWindow();
var shimManager = ShimManager.GetValue(window);
var htmlDocument = HtmlDocumentCtor
.Invoke(new[] { shimManager, raw