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();
}
