blog

枪手亨利

博客园 首页 新随笔 联系 订阅 管理

本文转自 C++Builder 研究 - http://www.ccrun.com/article/go.asp?i=615&d=l77p38

#include "SHDocVw_OCX.h"
#include "cdoex.h"
#include "msado15.h"
using namespace CDO;
// 本文是ccrun(老妖)根据相关资料改的,在BCB 6.0 下成功编译并测试通过.
// 如果有不能正常运行的,可能需要在机器上安装有outlook.
void __fastcall SaveWholePage(BSTR bstrUrl, BSTR bstrFileName)
{
    CoInitialize(NULL);
    IMessage *pMsg;
    IConfiguration *pConfig;
    HRESULT hr = CoCreateInstance(__uuidof(Message), NULL,
            CLSCTX_INPROC_SERVER, __uuidof(IMessage), (void**)&pMsg);
    hr = CoCreateInstance(
       __uuidof(Configuration),
       NULL,
       CLSCTX_INPROC_SERVER,
       __uuidof(IConfiguration),
       (void**)&pConfig);

    pMsg->put_Configuration(pConfig);
    try<br>
    {
        pMsg->CreateMHTMLBody(
            bstrUrl,
            cdoSuppressNone,
            WideString(""),
            WideString(""));
    }
    catch(...)
    {
        ShowMessage("有错误发生!");
        return;
    }
    ADOStream *pStream;
    pMsg->GetStream(&pStream);
    pStream->SaveToFile(bstrFileName, adSaveCreateOverWrite);
    pMsg->Release();
    pStream->Release();
    CoUninitialize();
}
// 调用举例:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    SaveWholePage(WideString("http://www.ccrun.com"),
            WideString("C:\\123.mht"));
}

posted on 2005-11-12 22:04  henry  阅读(716)  评论(0)    收藏  举报