VS2019使用Microsoft Web Browser控件获取网页源码

VS2019使用Microsoft Web Browser控件实例

VS2019使用Microsoft Web Browser控件实例-CSDN博客文章浏览阅读7.5k次,点赞2次,收藏8次。通过ActiveX控件 Microsoft Web Browser 可以实现简易的浏览器访问,但网上大多文章都是片段式的,所以写个完整的实现流程。1.首先创建一个基于对话框的MFC项目,命名为WebBrowserDemo;2.打开主窗口,添加一个编辑框,用来输入网址;然后右键,插入ActiveX控件,选择Microsoft Web Browser;3.然后添加控件变量,第一种就是默认的CEXPLORER1变量类型;然后会自动生成CEXPLORER1.h,但是这里面会有IWe._microsoft web browserhttps://blog.csdn.net/can_yi/article/details/123853595上面是添加控件的方法,感谢上面的博主提供简单易懂的文章,一看就明白了。下面我记录一下Microsoft Web Browser获取网页源码的方法。

步骤一、pch.h添加如下内容:

// 放在afxhtml.h前后屏蔽33005头文件警告

#pragma warning(push)

#pragma warning(disable: 33005)

#include <afxhtml.h>

#pragma warning(pop)

#include <mshtml.h>

#include <atlbase.h>

#include <atlcom.h>

步聚二、添加一个编辑框控件和一个按钮,这些简单的自己百度或者Ai。下面提给代码:

void CMFCApplication1Dlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)

{

// TODO: 在此处添加消息处理程序代码

//IDispatch* pDocDisp = m_web.get_Document();

CComPtr<IDispatch> pDocDisp = m_web.get_Document();

if (!pDocDisp) {

MessageBox(_T("获取文档对象失败"));

return;

}

CComPtr<IHTMLDocument2> pHTMLDoc;

HRESULT hr = pDocDisp.QueryInterface(&pHTMLDoc);

// ========== 获取网页标题 ==========

CComBSTR bstrTitle;

pHTMLDoc->get_title(&bstrTitle);

CString strTitle(bstrTitle);

MessageBox(strTitle, _T("网页标题"));

// ========== 获取body完整HTML源码 ==========

CComPtr<IHTMLElement> pBody;

pHTMLDoc->get_body(&pBody);

CComBSTR htmlStr;

pBody->get_innerHTML(&htmlStr);

CString strSource(htmlStr);

// 测试弹窗输出源码

MessageBox(strSource, _T("网页源码"));

}

void CMFCApplication1Dlg::OnBnClickedOk()

{

// TODO: 在此添加控件通知处理程序代码

if (!m_web.m_hWnd)

{

MessageBox(_T("浏览器控件未创建完成"));

return;

}

CString strURL;

GetDlgItemText(IDC_EDIT1, strURL);

m_web.Navigate(strURL, nullptr, nullptr, nullptr, nullptr);

//CDialogEx::OnOK();

}