IE插件开发技术汇总

有一段时间不写技术文章,貌似博客园的缩进样式变化了。

这个主题讲IE插件开发,又以BHO为主要内容,也谈一些其他相关的,也有一些关于ATL,和我的心得方面的。希望读者能给我一些意见,我做IE插件,确实没有什么经验。

BHO

BHO就是IE浏览器的辅助对象,我们需要编写的是一个IE进程内COM组件,要实现几个特定的接口。其实,了解COM的朋友,就不会觉得难了。

首先,一个BHO必须实现IObjectWithSite接口。

我们实现此接口,然后将BHO的CLSID添加到注册表中,由此创建一个简单的浏览器扩展。

【in VS2008 】

1. 创建一个ATL简单对象,

2. 在Options - Support里面选择支持IObjectWithSite。

3. 在.Rgs里面添加如下(类似)方法

HKLM {
  NoRemove SOFTWARE {
    NoRemove Microsoft {   
      NoRemove Windows {
        NoRemove CurrentVersion {
          NoRemove Explorer {
            NoRemove 
' Browser Helper Objects '  {
              ForceRemove 
' {GUID} '   =  s  ' BHO Name '  {
                val 
' NoExplorer '   =  d  ' 1 '
              } } } } } } } 

NoExplorer = 1,什么意思,我还没有确定。

还没有完,还得写代码~

4. 实现HRESULT SetSite(IUnknown* pUnkSite) 接口方法。

通过pUnSite可以Query到IWebBrowser2*接口。


执行JavaScript代码

可以用如下代码执行JavaScript代码:

    IDispatch *  pDoc  =  NULL;
    HRESULT h 
=  m_pWebBrowser -> get_Document( & pDoc);
    
if  (SUCCEEDED(h))
    {
        IHTMLWindow2
*  pHTMLWnd  =  NULL;
        ((IHTMLDocument2
* )pDoc) -> get_parentWindow( & pHTMLWnd);
        
if  (pHTMLWnd  !=  NULL)
        {
            VARIANT varRet;
            
//  I got it;
            CComBSTR jsCode  =  L " function a() {     a = 1;alert(a * 2 + a); }a(); " ;
            HRESULT e 
=  pHTMLWnd -> execScript(jsCode, L " Javascript " & varRet);
            
if  (SUCCEEDED(e))
            {

            }
    ... ...

需要说明的是,varRet这个变量,是没法真正获取JavaScript返回值的。

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/healerkx/articles/1696843.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值