勤能补拙,Expter

成都游戏Coder,记录游戏开发过程的笔记和心得!

关于IE插件,关于BHO的弹出窗口

      BHO(Browser Help Objects),是实现了特定接口的COM组件。开发好的BHO插件在注册表特定的位置注册好后,每当微软的浏览器启动,BHO实例就会被创建。在浏览 器工作的工程中,BHO会接收到很多事件,比如浏览器浏览新的地址、前进或后退、生成新的窗口、浏览器退出等等;BHO可以在这些事件的响应中实现与浏览 器的交互。
     关于IE插件的入门可以查看http://hi.baidu.com/winnyang/blog/item/21e7367ef2b7643f0dd7da57.html (VC++开发BHO插件)。
     
     在打开新窗口的时候函数Invoke会响应DISPID_NEWWINDOW2事件(定义在头文件"EXDISPID.H")中。
   
      具体代码:
     
    case DISPID_NEWWINDOW2:

        
/// 设置是否允许弹出窗口
        READYSTATE ReadyState;
        
/// mWebBrowser为浏览器指针
        mWebBrowser->get_ReadyState(&ReadyState);

        
/// 阻止新窗口的创建
        if (ReadyState!=READYSTATE_COMPLETE)
        
{
            
*pDispParams->rgvarg[0].pboolVal = TRUE;
            
return S_OK;
        }

        
/// 不阻止
        else
        
{
            
*pDispParams->rgvarg[0].pboolVal = FALSE;
            
return S_OK;
        }

        
break;



      另外 得到新窗口的URL可以响应DISPID_NEWWINDOW3消息。具体做法可以查看msdn..

posted on 2009-07-26 20:06 expter 阅读(1280) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理