• 枚举当前环境中打开的所有IE


    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 );

  • 相关阅读:
    mysql 复制表数据,表结构的3种方法
    MySQL 存储过程使用表名做参数
    关于mysql engine(引擎)的疑问
    mysql存储过程之循环
    mysql 命令大全
    关于mysql的表名/字段名/字段值是否区分大小写的问题
    navicat for mysql 快捷键(原创)
    解决"Subquery returns more than 1 row"sql查询错误
    mysql:“Access denied for user 'root@IP地址'"
    MySQL常用经典语句
  • 原文地址:https://www.cnblogs.com/fangkm/p/1426531.html
Copyright © 2020-2023  润新知