IE程序是属于Shell的一个应用程序,要枚举当前打开的所有IE程序窗口,可以通过ShellWindows集合来打开属于Shell的当前的窗口的集合.

首先添加程序需要的头文件和tlb库

//
#import <shdocvw.dll> 
#import <mshtml.tlb>
#include <mshtml.h>
//

//定义IE程序处理函数指针
typedef  void  (*ProcessWebBrowser)( const SHDocVw::IWebBrowser2Ptr pBrowser );
/*
* 枚举当前打开的IE窗口,并输出网页的标题
*/
BOOL  EnumInternetExplorer( ProcessWebBrowser pHander )
{
    //IE属于shell的一个应用程序,再次需要枚举ShellWindows集合
    SHDocVw::IShellWindowsPtr  spSHWinds;
    if( FAILED( spSHWinds.CreateInstance( __uuidof( SHDocVw::ShellWindows ) ) ) )
        return FALSE;

//获取ShellWindows集合的数目
    long nCount  = spSHWinds->GetCount();
    for ( long lIndex = 0; lIndex < nCount; lIndex++ )
    {
        //枚举每个项
        IDispatchPtr  spDisp;
        _variant_t  var( lIndex, VT_I4 );
        spDisp  =  spSHWinds->Item( var );

if ( spDisp != NULL )
        {
            //Query网页接口
            SHDocVw::IWebBrowser2Ptr  spBrowser( spDisp );
            if( ( spBrowser != NULL ) && ( pHander != NULL ) )
            {
                //调用处理函数
                pHander( spBrowser );
            }
        }
    }

return TRUE;
}

void  ShowIETitle( const  SHDocVw::IWebBrowser2Ptr  pBrowser )
{
    //获取网页的文档接口
    MSHTML::IHTMLDocument2Ptr  spDoc( pBrowser->GetDocument() );
    if( spDoc != NULL )
    {
        CComBSTR  bstr;
        //获取标题
        spDoc->get_title( &bstr );
        //bstr即为网页标题
        _bstr_t   bstr_adapt  =  bstr;
        TCHAR* szTitle = bstr_adapt;
        AtlMessageBox( NULL, szTitle );
    }
}

调用:

EnumInternetExplorer( ShowIETitle );

枚举当前环境中打开的所有IE的更多相关文章

  1. mysql8在生产环境中的配置

    一,配置文件的位置 [root@yjweb ~]# ll /etc/my.cnf -rw-r--r-- 1 root root 935 Mar 11 16:52 /etc/my.cnf 说明:通常我们 ...

  2. Java枚举类在生产环境中的使用方式

    前言   Java枚举在项目中使用非常普遍,许多人在做项目时,一定会遇到要维护某些业务场景状态的时候,往往会定义一个常量类,然后添加业务场景相关的状态常量.但实际上,生产环境的项目中业务状态的定义大部 ...

  3. 如何生成报告来枚举出整个sharepoint环境中的每个页面所使用的所有webpart

    背景 我的公司的SharePoint环境中购买了大量的第三方webpart,比如Quick Apps, Telerik RadEditor, Nintex Workflow等等..这样做的好处就是成本 ...

  4. 在离线环境中发布.NET Core至Windows Server 2008

    在离线环境中发布.NET Core至Windows Server 2008 0x00 写在开始 之前一篇博客中写了在离线环境中使用.NET Core,之后一边学习一边写了一些页面作为测试,现在打算发布 ...

  5. 在离线环境中使用.NET Core

    在离线环境中使用.NET Core 0x00 写在开始 很早开始就对.NET Core比较关注,一改微软之前给人的印象,变得轻量.开源.跨平台.最近打算试着在工作中使用.但工作是在与互联网完全隔离的网 ...

  6. 在 SharePoint Server 2016 本地环境中设置 OneDrive for Business

    建议补丁 建议在sharepoint2016打上KB3127940补丁,补丁下载地址 https://support.microsoft.com/zh-cn/kb/3127940 当然不打,也可以用O ...

  7. ASP.NET 在 Windows Azure 环境中使用基于 SQLServer 的 Session

    Session 嘛,占一点儿服务器资源,但是总归比 ViewState 和 Cookie 安全点儿,所以还是要用的. Windows Azure 环境中的 Web 服务器经由负载均衡调度,根本无法保证 ...

  8. 在WPF程序中打开网页:使用代理服务器并可进行JS交互

    本项目环境:使用VS2010(C#)编写的WPF程序,通过CefSharp在程序的窗体中打开网页.需要能够实现网页后台JS代码中调用的方法,从网页接收数据,并能返回数据给网页.运行程序的电脑不允许上网 ...

  9. 如何在没有域的环境中搭建AlwaysOn(二)

    对DBA而言,不需要域就可以搭建SQL Server AlwaysOn是Windows Server 2016中最令人兴奋的功能了,它不仅可以降低搭建的成本,而且还减少了部署和运维的工作量. 上篇博客 ...

随机推荐

  1. Linux常用服务器构建-samba(ubantu)

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通 ...

  2. Java8 Lambda表达式实战之方法引用(一)

    方法的引用 方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法,方法引用提供了一种引用而不执行方法的方式,如果抽象方法的实现恰好可以使用调用另外一个方法来实现,就有可能可以使用方法引用 方法 ...

  3. (mark)ubuntu16.04下安装&配置anaconda+tensorflow新手教程

    https://blog.csdn.net/m0_37864814/article/details/82112029

  4. Java——final代码块是否一定被执行---18.11.08

    辨析:final语句块一定会被执行吗? 答案是 不一定!!! 至少有两种情况下finally语句是不会被执行的: (1)try语句没有被执行到,如在try语句之前return就返回了,这样final语 ...

  5. python--模块之time,datetime时间模块

    time: 表示时间的三种方式:时间戳.格式化的时间字符串.元组时间戳是计算机能够识别的时间:时间字符串是我们能够看懂的时间:元组是用来操作时间: 导入时间模块import time 1,时间戳(ti ...

  6. ROS Twist和Odometry消息类型使用(Python)

    消息类型: 1. Twist - 线速度角速度 通常被用于发送到/cmd_vel话题,被base controller节点监听,控制机器人运动 geometry_msgs/Twist geometry ...

  7. protected修饰符详解

    protected这个修饰符,各大参考书都会这样说:访问权限为类内,包内和子类,因此在父类中定义的方法和成员变量如果为protected修饰的,是可以在不同包中的子类进行访问的,示例代码如下: pac ...

  8. python 定位文件目录

    经常有引用文件的地方,所以整理了一下如何定位文件目录的方法 定位当前文件的目录 import os file_path = os.path.dirname(__file__) 定位当前文件的父目录 i ...

  9. Resharp使用简记

    一图流: 拾贝: .字符串引号中直接回车键自动添加连接字符串 Ctrl+B:转到定义 Ctr+F11:展示类结构 Ctr+Alt+j:包围代码块 Ctr+\:注释和取消注释 Alt+Ins:重构 Ct ...

  10. Logistic回归和SVM的异同

    这个问题在最近面试的时候被问了几次,让谈一下Logistic回归(以下简称LR)和SVM的异同.由于之前没有对比分析过,而且不知道从哪个角度去分析,一时语塞,只能不知为不知. 现在对这二者做一个对比分 ...