首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 透過 COM 互操作獲取 IE 瀏覽器當前頁面 HTML 文檔

     編輯:關於C#

場景與需求

在自動化測試、爬蟲或桌面應用整合場景中,常需從已運行的 Internet Explorer 實例獲取當前頁面的 HTML 內容。本文示範如何使用 SHDocVw 與 mshtml 兩個 COM 組件實現此功能。

準備工作

  1. 建立任意版本 Visual Studio 的控制台應用程式(.NET Framework 1.0 ~ 4.x 均可)。
  2. 在專案中添加兩個 COM 參考:
    • Microsoft Internet Controls (SHDocVw.dll):提供 ShellWindows、InternetExplorer 等介面。
    • Microsoft HTML Object Library (mshtml.dll):提供 IHTMLDocument2 等 DOM 操作介面。
添加 COM 參考對話框

核心代碼實現

using System;
using System.IO;
using SHDocVw;
using mshtml;

namespace GetIEHtmlDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 獲取所有 Shell 視窗(含 IE、資源管理器等)
            ShellWindows shellWindows = new ShellWindowsClass();

            foreach (InternetExplorer ie in shellWindows)
            {
                // 2. 透過進程檔名過濾出 IE 實例
                string fileName = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
                if (!fileName.Equals("iexplore")) continue;

                // 3. 獲取當前頁面 URL
                Console.WriteLine($"Web Site : {ie.LocationURL}");

                // 4. 取得 HTML 文檔介面
                IHTMLDocument2 htmlDoc = ie.Document as IHTMLDocument2;
                if (htmlDoc != null && htmlDoc.body != null)
                {
                    // 5. 輸出 HTML 片段(前 40 字元)
                    string snippet = htmlDoc.body.outerHTML.Substring(0, Math.Min(40, htmlDoc.body.outerHTML.Length));
                    Console.WriteLine($" Document Snippet: {snippet}");
                }
                else
                {
                    Console.WriteLine(" Document Snippet: ***Failed***");
                }
                Console.WriteLine(Environment.NewLine);
            }
            Console.ReadLine();
        }
    }
}

關鍵點解析

  • ShellWindowsClass:枚舉系統中所有 Shell 視窗,不僅限於 IE。
  • FullName 屬性:返回可執行檔完整路徑,透過檔名(iexplore.exe)精確識別 IE 進程。
  • Document 屬性:返回 object,需轉型為 IHTMLDocument2 才能存取 DOM。
  • outerHTML:包含元素本身及其所有子元素的 HTML 字串。

運行效果

程式啟動後會列出所有 IE 視窗的 URL 及 HTML 片段:

程式運行截圖

注意事項與現代替代方案

  • 此方案依賴 IE COM 元件,僅適用於 Windows 平台且需安裝 IE。
  • IE 已於 2022 年停止支援,新專案建議使用 Selenium WebDriver、Puppeteer Sharp 或 Playwright 等現代瀏覽器自動化庫,支援 Chromium/Firefox/WebKit 且跨平台。
  • 若必須維護舊專案,請確保目標機器已註冊 SHDocVw.dll 與 mshtml.dll。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved