- /*============================说明部分=================================
- 实现一下函数需包含头文件
- #include <Wininet.h>
- #include <Shlwapi.h>
- Linker : Wininet.lib Shlwapi.lib
- =================================================================*/
- /*========================================END========================================*/
- /*============================说明部分=================================
- 清除指定网页Cookie,注意传参,如:www.baidu.com 要写为:baidu.com
- =================================================================*/
- BOOL CleanUrlCache(LPCTSTR lpUrl)
- {
- LPINTERNET_CACHE_ENTRY_INFO lpICEI = NULL;
- DWORD dwSize = 0;
- HANDLE hFind = FindFirstUrlCacheEntry(NULL, NULL, &dwSize);
- if (hFind == NULL && GetLastError() != ERROR_INSUFFICIENT_BUFFER)
- return FALSE;
- lpICEI = (LPINTERNET_CACHE_ENTRY_INFO)new char[dwSize];
- hFind = FindFirstUrlCacheEntry(NULL, lpICEI, &dwSize);
- if (hFind == NULL)
- {
- delete lpICEI;
- return FALSE;
- }
- do
- {
- if (StrStrI(lpICEI->lpszSourceUrlName, lpUrl))
- {
- int bRet = DeleteUrlCacheEntry(lpICEI->lpszSourceUrlName);
- }
- delete lpICEI;
- lpICEI = NULL;
- dwSize = 0;
- if (!FindNextUrlCacheEntry(hFind, NULL, &dwSize) && GetLastError() != ERROR_INSUFFICIENT_BUFFER)
- break;
- lpICEI = (LPINTERNET_CACHE_ENTRY_INFO)new char[dwSize];
- } while (FindNextUrlCacheEntry(hFind, lpICEI, &dwSize));
- if (lpICEI != NULL)
- delete lpICEI;
- return TRUE;
- }
- /*========================================END========================================*/
- /*============================说明部分=================================
- 清除IE所有Cookie
- #include <Wininet.h>
- Linker : Wininet.lib
- =================================================================*/
- void ClearInternetCache()
- {
- DWORD dwNeeded = 0;
- FindFirstUrlCacheEntry(NULL, NULL, &dwNeeded);
- if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
- {
- unsigned char *buffer = new unsigned char[dwNeeded];
- try
- {
- LPINTERNET_CACHE_ENTRY_INFO lpicei =
- reinterpret_cast<LPINTERNET_CACHE_ENTRY_INFO>(buffer);
- HANDLE HFind = FindFirstUrlCacheEntry(NULL, lpicei, &dwNeeded);
- DeleteUrlCacheEntry(lpicei->lpszSourceUrlName);
- bool no_more_files = false;
- while (!no_more_files)
- {
- if (FindNextUrlCacheEntry(HFind, lpicei, &dwNeeded))
- {
- DeleteUrlCacheEntry(lpicei->lpszSourceUrlName);
- }
- else switch (GetLastError())
- {
- case ERROR_INSUFFICIENT_BUFFER:
- {
- delete [] buffer;
- buffer = new unsigned char[dwNeeded];
- lpicei = reinterpret_cast<LPINTERNET_CACHE_ENTRY_INFO>(buffer);
- break;
- }
- default:
- {
- no_more_files = true;
- break;
- }
- }
- }
- FindCloseUrlCache(HFind);
- }
- catch (...)
- {
- delete [] buffer;
- }
- delete [] buffer;
- }
- }
- /*========================================END========================================*/
- /*============================说明部分=================================
- CString 转换为 VARIANT 类型
- =================================================================*/
- StringToVariant(CString str)
- {
- VARIANT variant;
- VariantInit(&variant);
- variant.vt=VT_BSTR;
- variant.bstrVal=str.AllocSysString();
- return variant;
- }
- /*========================================END========================================*/
- /*============================说明部分=================================
- 打开指定URL,其中m_webBrowser 是web browser
- 控件关联的控件类型的变量
- =================================================================*/
- OpenURL(LPCTSTR strURL)
- {
- VARIANT vInfo;
- VariantInit(&vInfo);
- CString strHeaders=_T("Content-Type:application/x-WWW-form-urlencoded");
- VARIANT vHeaders=StringToVariant(strHeaders);
- m_webBrowser.Navigate(strURL,&vInfo,&vInfo,&vInfo,&vHeaders);
- }
- /*========================================END========================================*/
- /*============================说明部分=================================
- 向指定ID的HTML标记中输入文字
- strID为标记的ID值
- #include <mshtml.h>
- #include <atlbase.h>
- =================================================================*/
- InputText(CString strID, CComVariant strText)
- {
- HRESULT hr;
- IDispatch *pDisp;
- pDisp=m_webBrowser.get_Document(); //得到webBrowser控件接口
- IHTMLDocument2* pDoc;
- hr=pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc); //得到网页文档接口
- IHTMLElementCollection* pColl=NULL;
- hr=pDoc->get_all(&pColl);//得到所有网页元素记录集合
- IDispatch *pDisp2;
- VARIANT index;//用于接收返回元素基于的索引,一般不用,设为0就好,而是用IDispatch 接收元素对象接口
- //V_VT(&index)=VT_I4;
- //V_I4(&index)=0;
- index.vt=VT_I4;
- index.lVal=0;
- VARIANT varID;//要查找的HTML标记ID
- varID=StringToVariant(strID);
- hr=pColl->item(varID,index,&pDisp2); //找到元素的位置
- if(S_OK==hr&&NULL!=pDisp2)
- {
- IHTMLElement* pElem=NULL;
- hr=pDisp2->QueryInterface(IID_IHTMLElement,(void**)&pElem);
- if(S_OK==hr&&NULL!=pElem)
- {
- pElem->put_innerText(strText.bstrVal);
- pElem->Release();
- }
- pDisp2->Release();
- pDisp->Release();
- }
- }
- /*========================================END========================================*/
- /*============================说明部分=================================
- 点击指定ID值的HTML按钮
- strID是按钮的ID值
- #include <mshtml.h>
- #include <atlbase.h>
- =================================================================*/
- ClickBtn(CString strID)
- {
- HRESULT hr;
- IDispatch* pDisp;
- pDisp=m_webBrowser.get_Document();//①得到网页控件接口
- IHTMLDocument2* pDoc;
- hr=pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc);//②得到网页文档接口
- IHTMLElementCollection* pColl=NULL;
- hr=pDoc->get_all(&pColl);//③得到网页元素记录集合接口
- IDispatch* pDisp2;
- VARIANT index;
- //V_VT(&index)=VT_I4;
- //V_I4(&index)=0;
- index.vt=VT_I4;
- index.lVal=0;
- VARIANT varID;
- varID=StringToVariant(strID);
- hr=pColl->item(varID,index,&pDisp2);//④得到指定HTML标记接口
- if(S_OK==hr&&NULL!=pDisp2)
- {
- IHTMLElement* pElem=NULL;
- hr=pDisp2->QueryInterface(IID_IHTMLElement,(void**)&pElem);//⑤得到确定元素接口
- if(S_OK==hr&&NULL!=pElem)
- {
- pElem->click();
- pElem->Release();
- }
- pDisp2->Release();
- pDisp->Release();
- }
- }
- /*========================================END========================================*/
- /*===============================================================
- 根据页面Class属性值点击页面元素
- =================================================================*/
- void CPiLiangQianDaoDlg::ClickByClassName()
- {
- IHTMLElementCollection *objAllElement=NULL;
- IHTMLDocument2 *objDocument=NULL;
- objDocument=(IHTMLDocument2 *)m_webBrowser.get_Document();
- //由控件得到IHTMLDocument2接口指针
- objDocument-> get_all(&objAllElement); //得到网页所有元素的集合
- IHTMLElement * pElem = NULL;
- VARIANT name;
- CComBSTR tag;
- long a;
- objAllElement-> get_length(&a);
- name.vt=VT_I4;
- for(int i=0;i <a;i++)//遍历所有元素
- {
- name.lVal = i;
- IDispatch * pDispatch=NULL;
- objAllElement-> item(name,name,&pDispatch);
- IHTMLElement* spElement;
- pDispatch-> QueryInterface(IID_IHTMLElement, (void**)&spElement);
- BSTR tag;
- spElement->get_className(&tag);
- CString ss(tag);
- if(ss == "j_signbtn sign_btn2 j_cansign sign0" || ss == "j_signbtn sign_btn2 j_cansign sign1" || ss == "j_signbtn sign_btn2 j_cansign sign6")
- spElement-> click();
- }
- /*=====================================================================================*/
- /*=====================================================================================
- 根据网页打开的进程设置进度条
- 给web browser添加OnProgressChange响应函数
- m_procCtrl是进度条关联的控件变量
- =======================================================================*/
- if(ProgressMax>0)
- m_procCtrl.SetPos(100*Progress / ProgressMax);
- //========================================
- /*====================================================================
- 搜索点击页面文字连接
- Str为文字
- =======================================================================*/
- ClickItem(CString str)
- {
- IHTMLElementCollection *objAllElement=NULL;
- IHTMLDocument2 *objDocument=NULL;
- objDocument=(IHTMLDocument2 *)m_webBrowser.get_Document();
- //由控件得到IHTMLDocument2接口指针
- objDocument-> get_all(&objAllElement); //得到网页所有元素的集合
- IHTMLElement * pElem = NULL;
- VARIANT name;
- CComBSTR tag;
- long a;
- objAllElement-> get_length(&a);
- name.vt=VT_I4;
- for(int i=0;i <a;i++)//遍历所有元素
- {
- name.lVal = i;
- IDispatch * pDispatch=NULL;
- objAllElement-> item(name,name,&pDispatch);
- IHTMLElement* spElement;
- pDispatch-> QueryInterface(IID_IHTMLElement, (void**)&spElement);
- BSTR tag;
- spElement-> get_outerText(&tag);
- CString ss(tag);
- if(ss=="地图")
- spElement-> click();
- }
- }
- /*=====================================================================================*/
- /*=======================================================================================
- 在DocumentCompleteExplorer判断是否为主框架加载完毕
- 在页面中有多个框架时会多次触发,可能导致页面中后面的“首页”链接得不到,可以在void CTest2Dlg::OnDownloadCompleteExplorer1(LPDISPATCH pDisp, VARIANT FAR* URL)
- 加入下面代码:
- ======================================================================================*/CComQIPtr <IWebBrowser2, &IID_IWebBrowser2> pWeb; CComQIPtr <IHTMLDocument2,&IID_IHTMLDocument2> pDoc2; pWeb = pDisp; pWeb-> get_Document((IDispatch**)&pDoc2); if (m_ie.GetDocument() != pDoc2) return;
- /*==========================================================================*/
- /*======================================================================
- 判断网页是否加载完毕
- ========================================================================*/
- void CPiLiangQianDaoDlg::DocumentCompleteExplorer(LPDISPATCH pDisp, VARIANT* URL)
- {
- // TODO: 在此处添加消息处理程序代码
- if(m_webBrowser.get_ReadyState() == READYSTATE_COMPLETE && times == 0)
- {
- ((CListBox *)GetDlgItem(IDC_LIST_STATE))->AddString(_T("加载完毕!"));
- m_IsInitDone = 1;
- times++;
- }
- }
- /*======================================================================================
- 截取网页部分内容,并画图显示
- ======================================================================================*/
- {
- CClientDC hImageDC(GetDlgItem(IDC_EDIT_INFO));
- HRESULT hr;
- IDispatch *pDisp;
- pDisp=m_webBrowser.get_Document(); //得到webBrowser控件接口
- IHTMLDocument2* pDoc;
- hr=pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc); //得到网页文档接口
- IHTMLElementCollection* pColl=NULL;
- hr=pDoc->get_all(&pColl);//得到所有网页元素记录集合
- IDispatch *pDisp2;
- VARIANT index;//用于接收返回元素基于的索引,一般不用,设为就好,而是用IDispatch 接收元素对象接口
- //V_VT(&index)=VT_I4;
- //V_I4(&index)=0;
- index.vt=VT_I4;
- index.lVal=0;
- VARIANT varID;//要查找的HTML标记ID
- varID=StringToVariant(_T("userlike_info_head_img"));
- hr=pColl->item(varID,index,&pDisp2); //找到元素的位置
- if(S_OK==hr&&NULL!=pDisp2)
- {
- IHTMLElement3* pElem=NULL;
- hr=pDisp2->QueryInterface(IID_IHTMLElement3,(void**)&pElem);
- IHTMLElementRender *pRender = NULL;
- pElem ->QueryInterface(IID_IHTMLElementRender, (void **) &pRender);
- pRender->DrawToDC(hImageDC);
- }
- }
- /*=================================================================================*/
- /*=================================================================================
- 判断网页是否加在完全(包含框架)
- 原理:如果直接早DocummentComple里判断的话,包含多个框架(frame)的网页就会多次激发该函数。所以这里我们这里通过pDish判断是不是主框架的的借口(最后调用该函数),如果是的话就是最后一次激发,表示主框架家在完毕,也就是整个网页加载完毕!
- =====================================================================================*/
- void CTieBaGuajiDlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)
- {
- // TODO: 在此处添加消息处理程序代码
- CComQIPtr <IWebBrowser2, &IID_IWebBrowser2> pWeb;
- CComQIPtr <IHTMLDocument2,&IID_IHTMLDocument2> pDoc2;
- pWeb = pDisp;
- pWeb-> get_Document((IDispatch**)&pDoc2);
- if (m_webBrowser.get_Document() == pDoc2)
- {
- ((CListBox*)GetDlgItem(IDC_LIST_STATE))->AddString(_T("初始化完成!"));
- }
- /////////////////////////////////////////
- /*if(0==m_count)
- {
- ((CListBox*)GetDlgItem(IDC_LIST_STATE))->AddString(_T("初始化完成!"));
- m_count++;
- }*/
- }
- /*=============================================================================*/
- /*==============================================================================
- 另外如果不想让webbrowser空间弹出错误提示可以,在对空间资源编辑时设置Slient为TRUE
- ==============================================================================*/
相关推荐
GD32F4系列Keil工程模板搭建全攻略(手把手教学版)
本文提供了一份详细的GD32F4系列Keil工程模板搭建指南。从软件安装、固件库获取、目录规划,到Keil工程创建、文件添加、关键配置(如编译器选项、头文件路径、时钟设置),再到代码定制与常见问题排查,手把手教你构建一个标准化、模块化的开发基础。文章重点介绍了如何利用官方固件库和代码模板,快速建立稳定高效的开发环境,适用于GD32F407等Cortex-M4内核芯片的入门与项目开发。
C#使用WebBrowser引入百度地图
欢迎您成为我的读者,希望这篇文章能给你一些帮助。 前言 今天有空和大家一起研究研究在WinForm端如何使用百度地图公开的信息利用WebBrowser组件来加载显示出地图。 首先仔细阅读百度地图的SDK信息,未提供在C#端的SDK信息,那么只能通过在WebBrowser中是通过加载网页html的形式来显示的。 此时用到的百度地图JavaScript API v3.0,地址如下: https://lbsyun.baidu.com/index.php?title=jspopular3.0 百度地图SDK .
Brainstorm简单分析近红外数据(fNIRS)(一)
Brainstorm分析fNIRS数据
MFC的WebBrowser控件 C++与JavaScript之间数据交互传递
----------------------------------------------------------------------------------------------------------------------------------------------- 最近开发MFC程序,用WebBrowser控件调用百度地图JavaScript API来展示轨迹,后台...
华为私有云HCS 8.1.1实战:从镜像制作到云主机发放全流程指南
本文详细解析了华为私有云HCS 8.1.1从镜像制作到云主机发放的全流程实战指南。内容涵盖制作标准化QCOW2镜像、配置云主机规格与主机组、规划外部网络,以及在运营面为租户初始化资源、配置审批流与产品目录。最后,通过用户视角演示了从创建VPC网络到申请、审批并最终绑定EIP访问云主机的完整操作步骤,为运维人员和架构师提供了一套清晰、可落地的HCS部署与管理实践方案。
Centos7 yum 报错「Errno 256」No more mirrors to try 解决方法
首先该问题的出现是由于网络的震荡导致,这是重点。(1)将源更换成阿里云的官方源,步骤参考如上(2)同时将zabbix的官方源更换成阿里云里面的zabbix镜像源,因为zabbix官方源根本网络不通,因为国家防火墙的拦截,导致网络不通。这是阿里源的zabbix镜像地址: https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/修改系统中早期生成的zabbix.repo文件,如下:主要是把baseurl替换成阿里云的zabbix镜像地址即可。
CWebBrowser2获取html的内容
m_web为浏览器控件的变量名 LPDISPATCH p=m_web.GetDocument(); CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2> d=m_web.GetDocument(); IHTMLElement* body; d->get_body(&body); CC...
RK3588 部署 ArcFace(r100)人脸识别模型:ONNX 转 RKNN 全流程详解
本文介绍了将ArcFace人脸识别模型转换为RKNN格式并部署到RK3588 NPU的方法。ArcFace是主流的人脸特征提取模型,适用于1:1比对和1:N检索等场景。文章详细说明了模型特点(输入112x112 RGB图像,输出512维特征向量)及转换步骤:首先使用torch2onnx将PyTorch模型转为ONNX格式,再通过RKNN工具进行量化转换。提供了完整的Python转换代码,包括预处理配置、模型加载、构建和导出过程。该方法能有效提升边缘设备上的人脸识别实时性,适用于门禁、考勤等应用场景。
VC--操作HTML的TABLE的样例代码
#include "stdafx.h"#include "sreport.h"#include "SHTMLReport.h" #ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif ////////////////////////////////////////////...
【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力
【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力 (论文笔记+引入代码)。LSKNet能够动态调整其大的空间接收场,以更好地模拟遥感场景中各种对象的范围上下文。据我们所知,这是首次在遥感目标检测领域探索大型和选择性核机制。
JMeter 中实现 100 个用户在 3 秒内并发登录
通过以上配置,你可以在 JMeter 中实现 100 个用户在 3 秒内并发登录
C++之WebBrowser容器,SDK实现
cpp文件 // XWebBrowser.cpp: implementation of the CXWebBrowser class. // http://blog.youkuaiyun.com/Sidyhe ////////////////////////////////////////////////////////////////////// #include "XWebBrowser.h" //
OpenClaw实战系列02:企业微信接入完全指南
本文详细介绍了如何将OpenClaw与企业微信对接,实现智能机器人功能。主要内容包括:企业微信侧创建智能机器人或自建应用,获取必要凭证和权限;OpenClaw侧安装配置企业微信插件,设置通信通道;完成双向验证并进行功能测试。文章提供了详细的配置步骤、常见问题排查方法和进阶玩法,帮助用户在30分钟内完成对接。关键点包括:确保URL可访问、Token一致、网关正常运行,以及针对不同部署环境(云服务器/内网)的配置差异。
『转』VC++ webbrowser函数使用范例
/*============================说明部分================================= 实现一下函数需包含头文件 #include <Wininet.h> #include <Shlwapi.h> Linker : Wininet.lib Shlwapi.lib =============...
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
VC++ Webbrowser2控件的缩放功能
最近一直忙着做毕业设计,博客好久没有更新啦。。 今晚心情愉悦,就把之前用Webbrowser控件的几个简单功能写一下吧。 关于Webbrowser控件我自己了解就是嵌入在各种客户端软件中的浏览器控件啦,各种编程语言都有带的控件,比较常用,不过微软包装的很好,很难去深入。 下面我介绍一下:如何浏览网页和缩放网页啦。 第一步、当然是在资源视图对话框界面中,在工具箱中右击选择选择项,然后到COM组
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
VC++ 使用WebBrowser控件中html文件以资源形式加载
1 . . . . 2 3 //加载资源文件中的HTML,IDR_HTML1就是HTML文件在资源文件中的ID 4 wchar_t self_path[MAX_PATH] = { 0 }; 5 GetModuleFileName(NULL, self_path, MAX_PATH); 6 CString res_url; 7 r...
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
如何对webbrowser和IE编程
如何对webbrowser和IE编程 一、 因为工作缘故,需要研究对IE编程,所以翻译了MS的有关资料,供参考。 IE的体系 WebBrowser Host 首先,必须有COM的基础知识,因为IE本身就是COM技术的典型应用。我们看到最上层是WebBrowser的宿主(Host),也就是任何你想重用(ReUse)webbrowser control的应用
如何对webbrowser和IE编程(二)
function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit.
WebBrowser2封装的容器
最近一直都在研究关于有界面的组件如何做为主框架的子view显示出来, 终于有一些心得,在此把它贴出来供高人指点.并分享成果,难免有错误之处,因为我的水平只有这么多.任何组件都会存在唯一的CLSID,此组件也一样存在这个ID,在工程目录下面找到和类名相同的HTM文件,运行它就是发现就是组件的界面,功能也是组件里写的功能.HTML文件里是可以写脚本的,所以也可以把组件的事件同时抛出来,就可以使用W
VB.net 里的WebBrowser 怎么使用-WebBrowser指南
http://www.jituannet.com/archives/category/%E4%BA%92%E8%81%94%E7%BD%91/page/2 首先,必须有COM的基础知识,因为IE本身就是COM技术的典型应用。我们看到最上层是WebBrowser的宿主(Host),也就是任何你想重用 (ReUse)webbrowser control的应用程序,可以是vb程序,也可以是
vc++在webbrowser中模拟点击网页链接_RSelenium动态网页抓取
[编者按:周末把动态网页抓取当作一个Project来做,现攻克?️差不多了,特此记之,以飨观众]动态网页是跟静态网页相对,特指网页的内容动态生成,比如需要在浏览器中滑动鼠标、或点击方向箭头才能看到新的东西,或者网页呈现的东西都是服务器即时生成。这些动态的内容一般通过在html文件中插入Java代码实现(至于为啥是Java,听说背后有故事,然后Java要收费了)。今天我要涉及的动态网页主要...
webbrowser入门使用方式
{优快云:CODE:hello webbrowser} 翻了好多网页,都没有初步介绍webbrowser 的入门用法的,我还是来自己写一个吧。 废话不多说了。 1:打开vc++ 6.0 ,建立一个基于对话框的程序。如图
427



被折叠的 条评论
为什么被折叠?



