Click here to visit our sponsor

Browser Helper Object の作成


Browser Helper Object とは

BHO は Explorer と Internet Explorer が水面下で読み込むオブジェクトです。
各プロセスごとにロードされます。
(Shell 4.71以降)


目次


ウイザードでプロジェクトの作成

[ATL COM AppWizard]ダイナミックライブラリ(DLL) のプロジェクトを新規作成します。
[挿入(I)] メニュー → [ATLオブジェクトの新規作成]
カテゴリの [オブジェクト][InternetExplorerオブジェクト] を選びます。


レジストリスクリプトファイル(.RGS) に

HKLM
{
  SOFTWARE
  {
    Microsoft
    {
      Windows
      {
        CurrentVersion
        {
          Explorer
          {
            NoRemove 'Browser Helper Objects'
            {
              ForceRemove {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
            }
          }
        }
      }
    }
  }
}

を追加すれば、出来上がりです。

({xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} 部分は Wizard で生成された CLSID)


IWebBrowser2 を取得する

オブジェクトのクラスの IObjectWithSiteImplSetSite() メソッドをオーバーライドします。

#include<exdisp.h>

class ATL_NO_VTABLE cXXXX :
    ,public IObjectWithSiteImpl<cXXXX>
    ...
{
    CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> m_spWebBrowser2;
    
    STDMETHODIMP cXXXX::SetSite(IUnknown *pUnkSite)
    {
        if (pUnkSite) {
            m_spWebBrowser2 = pUnkSite; // m_spWebBrowser2 に保持
        }
        return IObjectWithSiteImpl<cXXXX>::SetSite(pUnkSite);
    }

    ...
};

ブラウザのイベントに接続する

できてません。

ActiveX Control を使う ATL篇 のイベントの接続 の CWindow を使わない場合を参考にしてください。


おわりに

このページの満足度は・・・

早くイベントを書いてほしい
素晴らしい!
まあまあ、良いかも
自己満足感がよくわかるページですね
まったくもって説明不足


Visual C++ページトップ

HOME

兄弟ページ 姉妹ページ
Click here to visit our sponsor