c #webbrowser控件显示“特殊文件夹”内容:为什么Document和DocumentDom总是为空?

时间:2009-09-26 10:37:52

标签: c# dom browser mshtml

在C#WinForms,.NET Framework 3.5中,在窗体上具有WebBrower控件的项目:

...将项目引用设置为MSHTMLdll和WinForm代码:“using mshtml;” ...

  1. 您可以轻松地将“特殊文件夹”(如“收藏夹”文件夹)加载到浏览器中。

  2. 加载“特殊文件夹”后
  3. :WebBrowser中出现的内容基本上是一种“资源管理器”视图:您可以选择典型的“资源管理器”视图样式“详细信息等”。在详细信息视图中,您有一个行列矩阵,具有典型的“资源管理器”样式列标题等。

  4. 通常我会通过将Document或文档的DomDocument转换为mshtml.dll公开的IHTMLDocument2接口来“获取”WebBrowser的DOM:

    IHTMLDocument2 HTMLDocument =(IHTMLDocument2)webBrowser1.Document;

    //也尝试了这个

    // IHTMLDocument2 HTMLDocument =(IHTMLDocument2)webBrowser1.Document.DomDocument;

    //也尝试了这个

    // HTMLDocumentClass HTMLDocument = webBrowser1.Document.DomDocument as HTMLDocumentClass;

    但在这种情况下,查看“特殊文件夹”内容,我总是将文档视为空。

    有趣的是,您可以在查看特殊文件夹(如收藏夹)时创建新文件夹并执行其他“文件操作”:我想知道我是否“正在逃避这个”,因为我已关闭保护模式IE8?

    在WebBrowser控件中查看特殊文件夹时,了解有关如何访问DOM的任何想法。

    谢谢!比尔

2 个答案:

答案 0 :(得分:1)

文件夹视图不是HTML文档,因此您无法使用HTML界面访问内容。如果你真的对窗口中显示的内容感兴趣,可以使用IShellBrowser,IShellView和IFolderView等shell接口。

答案 1 :(得分:0)

通常,在加载页面之前,webbrowser的document属性将为null。您可以尝试此操作来初始化文档属性:

WebBrowser1.Navigate时( “关于:空白”); while(webBrowser1.Document.Body == null)Application.DoEvents(); //现在您可以访问Document属性,包括获取/设置innerHtml

但是,我不确定这会对你有所帮助,因为Document属性为null,而你仍然在查看你想看到的内容,建议即使Document属性不再为null,也不会是访问特殊文件夹数据的方法。但你可以尝试上面的代码,然后加载你的特殊文件夹,然后查看文档,看看你得到了什么......