gpt4 book ai didi

c++ - 从 CHtmlView (visual studio 6) 检索 HTML 源代码

转载 作者:太空宇宙 更新时间:2023-11-04 14:10:26 24 4
gpt4 key购买 nike

我正在开发一个使用 CHtmlView 的应用程序。新要求意味着我希望能够从类中获取 HTML 源代码以解析特定标记(或者如果可能,只获取标记中的信息)。如果我们使用较新的系统并且我可以使用 CHtmlView::GetSource 但它不存在,这会很好。

我已经在网上进行了相当广泛的搜索,但对大多数 Windows 编程来说都是新手,还没有能够实现任何有用的东西。

因此,如果有人有一个示例说明如何在不使用 GetSource 的情况下从 CHtmlView 中提取 HTML,我将不胜感激。我试过了

    BSTR bstr;
_bstr_t * bstrContainer;
HRESULT hr;
IHTMLDocument2 * pDoc;
IDispatch * pDocDisp = NULL;
pDocDisp = this->GetHtmlDocument();
if (pDocDisp != NULL) {
hr = pDocDisp->QueryInterface (IID_IHTMLDocument2, (void**)&pDoc);
if (SUCCEEDED(hr)) {
if (pDoc->toString(&bstr) != S_OK) {
//error...
} else {
bstrContainer = new _bstr_t(bstr);
size = (bstrContainer->length()+1)*2;
realString = new char[size];
strncpy(realString, (char*)(*bstrContainer), size);
}
} else {
//error
}
pDocDisp->Release();
}

但它主要只是给我 realString 中的“[object]”。就像我说的,Windows 新手。

感谢任何帮助。

最佳答案

将此辅助函数添加到您的 CHtmlView 派生类中以检索 html 源。请记住检查此函数返回的 bool 状态,因为当系统资源不足时,com 接口(interface)可能非常不可靠。

 /* ============================================== */
BOOL CTest1View::GetHtmlText(CString &strHtmlText)
{
BOOL bState = FALSE;
// get IDispatch interface of the active document object
IDispatch *pDisp = this->GetHtmlDocument();
if (pDisp != NULL)
{ // get the IHTMLDocument3 interface
IHTMLDocument3 *pDoc = NULL;
HRESULT hr = pDisp->QueryInterface(IID_IHTMLDocument3, (void**) &pDoc);
if (SUCCEEDED(hr))
{ // get root element
IHTMLElement *pRootElement = NULL;
hr = pDoc->get_documentElement(&pRootElement);
if (SUCCEEDED(hr))
{ // get html text into bstr
BSTR bstrHtmlText;
hr = pRootElement->get_outerHTML(&bstrHtmlText);
if (SUCCEEDED(hr))
{ // convert bstr to CString
strHtmlText = bstrHtmlText;
bState = TRUE;
SysFreeString(bstrHtmlText);
}
pRootElement->Release();
}
pDoc->Release();
}
pDisp->Release();
}
return bState;
}

关于c++ - 从 CHtmlView (visual studio 6) 检索 HTML 源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14719345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com