bho插件动态显示浏览器网页源代码,该如何解决
bho插件动态显示浏览器网页源代码
vc开发的bho插件,已经通过接口IWebBrowser2和浏览器建立连接,现在要获取网页页面《body》内的源代码并在浏览器上用文本对话框显示源代码,
写的源代码如下:
HRESULT CViewSource::GetDocumentContent()
{
USES_CONVERSION;
// 获取 WebBrowser的文档对象
CComPtr<IDispatch> pDisp;
HRESULT hr = m_spWebBrowser2->get_Document(&pDisp);
if (FAILED(hr))
return hr;
// 确保我们取得的是一个IHTMLDocument2接口指针
//让我们查询一下 IHTMLDocument2 接口 (使用灵敏指针)
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> spHTML;
spHTML = pDisp;
// 抽取文档源代码
if (spHTML)
{
// 取得BODY 对象
hr = spHTML->get_body(&m_pBody);
if (FAILED(hr))
return hr;
// 取得HTML 文本
BSTR bstrHTMLText;
hr = m_pBody->get_outerHTML(&bstrHTMLText);
if (FAILED(hr))
return hr;
// 进行文本的Unicode到 ANSI的转换
LPTSTR psz = new TCHAR[SysStringLen(bstrHTMLText)];
lstrcpy(psz, OLE2T(bstrHTMLText));
// 文本进行相应的调整
HWND hwnd = m_dlgCode.GetDlgItem(IDC_TEXT);
EnableWindow(hwnd, true);
hwnd = m_dlgCode.GetDlgItem(IDC_APPLY);
EnableWindow(hwnd, true);
// 设置代码窗口中的文本
m_dlgCode.SetDlgItemText(IDC_TEXT, psz);
delete [] psz;
}
else // 文档不是一个 HTML 页
{
m_dlgCode.SetDlgItemText(IDC_TEXT, "");
HWND hwnd = m_dlgCode.GetDlgItem(IDC_TEXT);
EnableWindow(hwnd, false);
hwnd = m_dlgCode.GetDlgItem(IDC_APPLY);
EnableWindow(hwnd, false);
}
编译后显示 m_dlgCode和IDC_TEXT等没定义,m_dlgCode应该是个CDialog对象,IDC_TEXT应该是CEdit对象,
我是新手,源代码是从网上下的,求大侠告知,代码少了些什么,那些对象没有创建。。。。
------解决方案--------------------
有大侠在,帮忙解决下,,自己先顶一下,别别沉了
vc开发的bho插件,已经通过接口IWebBrowser2和浏览器建立连接,现在要获取网页页面《body》内的源代码并在浏览器上用文本对话框显示源代码,
写的源代码如下:
HRESULT CViewSource::GetDocumentContent()
{
USES_CONVERSION;
// 获取 WebBrowser的文档对象
CComPtr<IDispatch> pDisp;
HRESULT hr = m_spWebBrowser2->get_Document(&pDisp);
if (FAILED(hr))
return hr;
// 确保我们取得的是一个IHTMLDocument2接口指针
//让我们查询一下 IHTMLDocument2 接口 (使用灵敏指针)
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> spHTML;
spHTML = pDisp;
// 抽取文档源代码
if (spHTML)
{
// 取得BODY 对象
hr = spHTML->get_body(&m_pBody);
if (FAILED(hr))
return hr;
// 取得HTML 文本
BSTR bstrHTMLText;
hr = m_pBody->get_outerHTML(&bstrHTMLText);
if (FAILED(hr))
return hr;
// 进行文本的Unicode到 ANSI的转换
LPTSTR psz = new TCHAR[SysStringLen(bstrHTMLText)];
lstrcpy(psz, OLE2T(bstrHTMLText));
// 文本进行相应的调整
HWND hwnd = m_dlgCode.GetDlgItem(IDC_TEXT);
EnableWindow(hwnd, true);
hwnd = m_dlgCode.GetDlgItem(IDC_APPLY);
EnableWindow(hwnd, true);
// 设置代码窗口中的文本
m_dlgCode.SetDlgItemText(IDC_TEXT, psz);
delete [] psz;
}
else // 文档不是一个 HTML 页
{
m_dlgCode.SetDlgItemText(IDC_TEXT, "");
HWND hwnd = m_dlgCode.GetDlgItem(IDC_TEXT);
EnableWindow(hwnd, false);
hwnd = m_dlgCode.GetDlgItem(IDC_APPLY);
EnableWindow(hwnd, false);
}
编译后显示 m_dlgCode和IDC_TEXT等没定义,m_dlgCode应该是个CDialog对象,IDC_TEXT应该是CEdit对象,
我是新手,源代码是从网上下的,求大侠告知,代码少了些什么,那些对象没有创建。。。。
------解决方案--------------------
有大侠在,帮忙解决下,,自己先顶一下,别别沉了