You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF项目SHDocVw操作IE功能迁移Edge及HTMLDocument获取方案咨询

目前微软Edge浏览器没有对外提供类似旧IE的SHDocVw自动化COM接口,要实现你需要的打开指定URL、读取页面HTML文档的同等能力,只能通过在WPF项目中集成WebView2控件来完成,以下是具体迁移步骤和相关实现代码:

迁移步骤
  • 第一步:安装WebView2依赖包
    在你的WPF项目的NuGet包管理器中搜索Microsoft.Web.WebView2,安装最新稳定版即可。
  • 第二步:在XAML中引入WebView2控件
    先在页面头部添加WebView2的命名空间引用:
    xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
    
    再在布局中添加WebView2控件实例:
    <wv2:WebView2 x:Name="MyWebView" Visibility="Visible" />
    
  • 第三步:实现导航到指定URL的逻辑
    对应你之前的LoadBrowser方法,WebView2采用异步API实现,不会阻塞UI线程,代码如下:
    private async Task LoadBrowser(string url)
    {
        // 等待WebView2核心环境初始化完成
        await MyWebView.EnsureCoreWebView2Async();
        // 导航到目标URL
        MyWebView.CoreWebView2.Navigate(url);
    }
    
获取页面HTMLDocument等效内容的方法

WebView2没有直接提供和旧IE兼容的IHTMLDocument2互操作接口,你可以通过执行JS脚本的方式获取页面内容、操作DOM元素,对应你之前的LoginToWebsite逻辑的实现代码如下:

private async Task LoginToWebsite(LoginDetailsModel userCredentials)
{
    // 监听导航完成事件,确保页面加载完毕后再操作
    MyWebView.CoreWebView2.NavigationCompleted += async (sender, e) =>
    {
        if (!e.IsSuccess) return;
        
        // 获取整个页面的HTML字符串
        string escapedHtml = await MyWebView.CoreWebView2.ExecuteScriptAsync("document.documentElement.outerHTML");
        // 对返回的转义字符串解码
        string pageHtml = System.Text.Json.JsonSerializer.Deserialize<string>(escapedHtml);
        
        // 操作DOM实现登录逻辑示例
        // 填写用户名
        await MyWebView.CoreWebView2.ExecuteScriptAsync($"document.getElementById('username').value = '{userCredentials.Username}'");
        // 填写密码
        await MyWebView.CoreWebView2.ExecuteScriptAsync($"document.getElementById('password').value = '{userCredentials.Password}'");
        // 点击登录按钮
        await MyWebView.CoreWebView2.ExecuteScriptAsync("document.getElementById('loginBtn').click()");
    };
}

如果你需要强类型的HTML文档对象进行解析操作,可以将获取到的pageHtml用HtmlAgilityPack等第三方HTML解析库加载后使用,和之前IHTMLDocument2的使用体验基本一致。如果你需要提取页面中特定内容,直接调整上述JS脚本的逻辑获取对应节点的内容即可。

内容的提问来源于stack exchange,提问作者Gokulakumar Sankaran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:57:04