MFC webbrowser读取文档的meta分析
IDispatch* pDisp = NULL; IDispatch* pDisp2 = NULL; IHTMLDocument2 *pHtmlDoc2 = NULL; IHTMLElementCollection* pCol; IHTMLMetaElement *pMeta = NULL; BSTR bUrl = NULL; BSTR bstr = NULL; try { if ((pDisp = m_WebBrowser.get_Document()) && SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2,(PVOID*)&pHtmlDoc2)) && SUCCEEDED(pHtmlDoc2->get_all( &pCol)) && pCol ) { //检查域名是www.test.com或www.test2.com的域名下, meta标签是否有myflag标记, 如果有则认为是正确的网页bIsGoodWebPage为TRUE pHtmlDoc2->get_URL(&bUrl); if(wcsstr((const wchar_t*)bUrl, L"www.test.com") == NULL && wcsstr((const wchar_t*)bUrl, L"www.test2.com") == NULL) { bIsGoodWebPage = TRUE; } else { long eleLen = 0; pCol->get_length(&eleLen); IHTMLMetaElement* pMetaElement = NULL; VARIANT varIndex; HRESULT hr; for( int i=0; i< eleLen; i++) { VARIANT var2; varIndex.vt = VT_UINT; varIndex.lVal = i; VariantInit( &var2 ); hr = pCol->item(varIndex, var2, &pDisp2); hr = pDisp2->QueryInterface(IID_IHTMLMetaElement,(void**)&pMeta); if( hr == S_OK) { if( SUCCEEDED(pMeta->get_httpEquiv(&bstr)) ) { if(!wcscmp((const wchar_t*)bstr,L"keywords")) { bstr = NULL; if(SUCCEEDED(pMeta->get_content(&bstr))) { if(!wcscmp((const wchar_t*)bstr, L"myflag")) { bIsGoodWebPage = TRUE; break; } } } } } } } } } catch (...) { WBTRACE("Error\r\n"); } SAFE_RELEASE(pMeta); SAFE_RELEASE(pDisp2); SAFE_RELEASE(pHtmlDoc2); SAFE_RELEASE(pDisp);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义