首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

將網頁儲存為單一 MHT 檔:CDO IMessage.CreateMHTMLBody 完整代碼

     編輯:VC 教學

需求

將完整網頁 (HTML + 圖片 + CSS + JS) 封裝為單一 `.mht` (MIME HTML) 檔,離線瀏覽/歸檔。

核心介面:CDO.Message (需 Outlook/Exchange 系統元件)


#include "SHDocVw_OCX.h"
#include "cdoex.h"
#include "msado15.h"
using namespace CDO;

void __fastcall SaveWholePage(BSTR bstrUrl, BSTR bstrFileName)
{
    CoInitialize(NULL);
    IMessage *pMsg = NULL;
    IConfiguration *pConfig = NULL;

    CoCreateInstance(__uuidof(Message), NULL, CLSCTX_INPROC_SERVER, __uuidof(IMessage), (void**)&pMsg);
    CoCreateInstance(__uuidof(Configuration), NULL, CLSCTX_INPROC_SERVER, __uuidoof(IConfiguration), (void**)&pConfig);
    pMsg->put_Configuration(pConfig);

    try {
        pMsg->CreateMHTMLBody(bstrUrl, cdoSuppressNone, L"", L"");
    } catch (...) {
        ShowMessage("儲存失敗!");
        pMsg->Release(); pConfig->Release(); CoUninitialize(); return;
    }

    _Stream *pStream = NULL;
    pMsg->GetStream(&pStream);
    pStream->SaveToFile(bstrFileName, adSaveCreateOverWrite);

    pStream->Release();
    pMsg->Release();
    pConfig->Release();
    CoUninitialize();
}

// 呼叫範例
SaveWholePage(WideString("https://www.ccrun.com"), WideString("C:\\123.mht"));

依賴與部署

  • 需安裝 Outlook 或 CDO 系統元件 (Windows Server/舊版 Office 自帶)。
  • 專案引用 `Microsoft CDO for Exchange 2000 Library`、`Microsoft ActiveX Data Objects`。
  • 若目標機無 CDO,可改用 `IWebBrowser2::ExecWB(OLECMDID_SAVEAS, ...)` 呼叫 IE 另存為 MHT (需 IE 安裝)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved