值得注意的是IE6,IE7,IE8的窗体组织完全不一样,需要用VS自带的工具Spy++查看确定

a 获取IE版本

int CMyRock::GetIEVersion() { CComPtr<IDispatch> pDocDisp; // Doc CComQIPtr<IHTMLDocument2> pHtmlDoc2; // HtmlDoc CComQIPtr<IHTMLWindow2> pWindow; // 窗体 CComQIPtr<IOmNavigator> pNavigator; // 浏览器 HRESULT hRes = m_spWebBrowser->get_Document(&pDocDisp); if(SUCCEEDED(hRes) && pDocDisp) { hRes = pDocDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHtmlDoc2); if(SUCCEEDED(hRes) && pHtmlDoc2) { hRes = pHtmlDoc2->get_parentWindow(&pWindow); if(SUCCEEDED(hRes) && pWindow) { hRes = pWindow->get_navigator(&pNavigator); if(SUCCEEDED(hRes) && pNavigator) { CComBSTR bstrVersion; hRes = pNavigator->get_appVersion(&bstrVersion); if(SUCCEEDED(hRes)) { CHAR szVersion[MAX_PATH]; memset(szVersion,0,MAX_PATH); WideCharToMultiByte(CP_ACP, 0, bstrVersion.m_str, -1, szVersion, MAX_PATH, NULL, NULL); if(strstr(szVersion, "MSIE 7.") != 0) { m_nVersion = 7; } else if(strstr(szVersion, "MSIE 8.") != 0) { m_nVersion = 8; } } } } } } return m_nVersion; }

b IE8获取窗体句柄的例子

HWND CMyRock::GetMenuParentIE8() { long nBrowser = 0; m_spWebBrowser->get_HWND(&nBrowser); HWND hWndParent = (HWND)nBrowser; HWND hWnd = GetWindow(hWndParent, GW_CHILD); // 查询主窗体,用SPY++看,会明白一些 if(hWnd) { TCHAR szClassName[MAX_PATH]; while(hWnd) { memset(szClassName,0,MAX_PATH); GetClassName(hWnd, szClassName, MAX_PATH); if(_tcscmp(szClassName,_T("Frame Tab"))==0) { // if(IsWindowVisible(hWnd)) { hWnd = GetWindow(hWnd, GW_CHILD); while(hWnd) { memset(szClassName, 0, MAX_PATH); GetClassName(hWnd, szClassName, MAX_PATH); if(_tcscmp(szClassName,_T("TabWindowClass"))==0) { hWnd = GetWindow(hWnd, GW_CHILD); while(hWnd) { memset(szClassName, 0, MAX_PATH); GetClassName(hWnd, szClassName, MAX_PATH); if(_tcscmp(szClassName,_T("Shell DocObject View"))==0) { hWnd = FindWindowEx(hWnd, NULL, _T("Internet Explorer_Server"), NULL); MessageBox(NULL, L"111", L"2222", 1); break; } hWnd = GetWindow(hWnd, GW_HWNDNEXT); } } hWnd = GetWindow(hWnd, GW_HWNDNEXT); } } } hWnd = GetWindow(hWnd, GW_HWNDNEXT); } } return hWnd; }

VC浏览器相关的学习(四)(在BHO中获取IE版本以及获取窗体句柄)相关推荐

  1. VC浏览器相关的学习(二)(BHO)

    BHO Browser Helper Objects     1 BHO更像是浏览器的一个插件.     2 BHO依靠于COM,所以他只对IE生效,对其他浏览器无效. 一 创建一个ATL DLL工程 ...

  2. VC浏览器相关的学习(七)(BHO捕获鼠标键盘事件)

    原本想暂时将BHO放放,结果发现了IDispEventImpl 的基类 IDispEventSimpleImpl,原来真正牛逼的方法都在这里呢. 0 #include <mshtmdid.h&g ...

  3. VC浏览器相关的学习(五)(在BHO中建立对话框)--解决CreateDialog的1813错误

    1 添加一个资源Dialog IDD_DIALOG1 2 创建对话框      MyRock.h CMyRock():m_hwndDlg(0) { m_pMyRock = this; } privat ...

  4. VC浏览器相关的学习(六)(IDispEventImpl包装的主要方法)

    IDispEventImpl包装方法对Ajax相当无力,也就是说对Flash也是没辙,娘的又走了弯路,作为几天的总结,IDispEventImpl包装的方法如下: MyRock.h // MyRock ...

  5. VC浏览器相关的学习(八)(截获IE网络访问)

    经过上面进程的学习,已经达到截取网络访问的条件了,需要声明如下: #include <WinInet.h> #pragma comment( lib, "WinInet.lib& ...

  6. VC浏览器相关的学习(三)(解决IE8无法断点调试)

    修改注册表,在HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet Explorer -> Main创建一个DWORD类 ...

  7. VC浏览器相关的学习(一)(Single document界面)

    1 MFC建立一个Single document     第一步:Document/View architecture support要打勾,否则第六步不可选     第六步:BaseClass改为C ...

  8. Android学习四、Android中的Adapter

    一.Adapter的介绍 An Adapter object acts as a bridge between an AdapterView and the underlying data for t ...

  9. web前端学习day_03:JavaScript:如何使用/ 语法/ 方法/ NaN/ js对象分类/ BOM浏览器相关/ 事件/ DOM文档对象模型

    JavaScript 给页面添加动态效果 JavaScript是一门编程语言,和Java没有关系,为了蹭热度. 语言特点: 属于脚本语言,不需要编译直接解析执行. 基于面向对象 属于弱类型语言, 强类 ...

最新文章

  1. GPT3 api接口调用
  2. Java基础之一组有用的类——生成日期和时间(TryDateFormats)
  3. 使用webpack4搭建一个基于Vue的组件库
  4. (转载)FPGA基础知识------PS/2基础知识
  5. zigbee bind, ZDO_RegisterForZDOMsg, zcl_registerForMsg
  6. 我用着不舒服的东西, 就TM是不合理的东西!!!
  7. linux md5 加密字符串和文件方法
  8. Mac终端编c语言,【新手提问】有知道用mac终端编c语言的网络编程的人吗?
  9. 系统检测到您正在使用网页抓取工具访问_从网站抓取数据的3种最佳方法
  10. 【零基础学Java】—哈希值(四十一)
  11. caffe :error MSB4062: 未能从程序集** 加载任务“NuGetPackageOverlay”
  12. java bfs dfs_java优先搜索(DFS/BFS)实际应用
  13. 【2.0版本】Capi文档生成帮助类,一键生成WebApi接口说明文档,方法异常处理,模拟请求接口(使用Hplus模版)
  14. Android项目:天气预报App
  15. Meshlab的基本使用
  16. html的取消和选中,checkbox 选中和取消切换问题
  17. Error: The required parameter ‘channelID‘ is empty. Rerun the command with -C flag
  18. 【转载】PCB layout工程师级别(可以留着自评用~~)
  19. 在线LaTex编辑器
  20. IDEA 文件夹颜色对目录的影响分析

热门文章

  1. 席慕容的诗歌——《我愿为莲》
  2. cordova 微信支付
  3. 漫画趣解Linux内核
  4. c语言20s计数器,供应电子计时器、JC20S、JY20S、计数控制器、计米器
  5. 【DPDK】网卡绑定和解绑步骤
  6. 实现发送xml格式的请求
  7. c语言表达ch是大写英文字母,做几道C语言的习题!
  8. 20款免费备份文件软件
  9. HDU 6078Wavel Sequence
  10. 计算机课学生当老师,当老师打开网课摄像头,本该端坐在电脑前的学生,竟变成了一只猫...