IEプラグイン(BHO)の作り方

[戻る]
ハナタロウ 2002/07/09(火) 18:45:15
皆さんこんにちは。ハナタロウです。早速ですが質問させていただきます。
GoogleツールバーなどのようなIEを拡張するようなソフトを作りたいのですが、どこからどう
手をつけていないのかわからないという現状です。
開発環境はVisualC++6.0です。
ご指導よろしくお願いします。

K.N 2002/07/10(水) 00:53:40
http://www.microsoft.com/JAPAN/developer/library/jptech/msdnnews/top.htm
↑IE(BHO)の説明のサイトです。(難解

↓Internet Explorer 管理者キット 6 (IE6の機能拡張ツール
http://www.microsoft.com/japan/ieak/downloads/ieak6/default.asp

山本八郎 2002/07/10(水) 13:23:14
ここならサンプルがDownloadできます。
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/dnbrowse/html/bho.asp

ハナタロウ 2002/07/10(水) 20:11:07
難しいですね。
このことについて取り上げられている掲示板があったら教えてください。

K.N 2002/07/10(水) 20:36:03
>このことについて取り上げられている掲示板があったら教えてください。

↓質問と
http://www.users.gr.jp/ml/archive/com/2583.asp
↓回答です。
http://www.users.gr.jp/ml/archive/com/2585.asp

K.N 2002/07/10(水) 22:06:09
VC.NET の検索より...今のところ見つかったのはこれぐらいです。

概要
(Explorer Bar、CommBand、または ToolBand などの) バンド オブジェクトを、
プログラムを使って Internet Explorer で表示および非表示にするためにサポートされ
ている唯一の方法は、
IWebBrowser2::ShowBrowserBar メソッドを使用することです。 

詳細
多くの場合、バンド オブジェクトの開発者は、ユーザーが新しいインスタンスの 
Internet Explorer を起動するときに、
バンド オブジェクトを自動的に表示できることを望みます。
この機能を達成する最も適切な方法は、
バンド オブジェクトと組み合わせて Browser Helper Object (BHO) を使用することで
す。
この方法で、BHO は、
レジストリ キーまたはバンド オブジェクト自体に保存しているほかの設定に基づいて
バンド オブジェクトをプログラム上でアクティブにするかどうかを決定できます。 

バンド オブジェクト (この例では [検索] バー) をプログラム上でアクティブにできる
最小限の BHO を構築するために、
新しい ATL/COM AppWizard のプロジェクトを作成し、
新しい Internet Explorer オブジェクトを追加できます。
その後、必要な機能を得るために、IObjectWithSite::SetSite メソッドをオーバーライ
ドします。
新しい SetSite メソッドのインプリメンテーションは、次のようになる必要がありま
す。 

STDMETHODIMP CShowBarObj::SetSite(IUnknown *pUnkSite)
{
   if (NULL != pUnkSite)
   {
      IWebBrowser2 *pBrowser = NULL;
      // サイトがブラウザ ウィンドウであることを保証します
      HRESULT hr = pUnkSite->QueryInterface(IID_IWebBrowser2, (void **) 
&pBrowser);
      if (SUCCEEDED(hr))
      {
         // バンド オブジェクト (この場合 [検索] バー) を表示します
         VARIANT vtBandGUID, vtShow;
         vtBandGUID.vt = VT_BSTR;
         vtBandGUID.bstrVal = SysAllocString(OLESTR("{30D02401-6A81-11D0-8274-
00C04FD5AE38}"));
         vtShow.vt = VT_BOOL;
         vtShow.boolVal = true;
         pBrowser->ShowBrowserBar(&vtBandGUID, &vtShow, 0);
         SysFreeString(vtBandGUID.bstrVal);
         pBrowser->Release();
      }
   }
   return S_OK;
}
 

また、コードでヘッダー ファイル ExDisp.h をインクルードし、
DLL の自己登録に使用される RGS ファイルに次のコードを追加する必要もあります。
"{77D54ACE-09A9-11D4-8ACE-00C04F542830}" を BHO の CLSID と置き換える必要がある
ことに注意してください。 
HKLM {
   SOFTWARE {
      Microsoft {
         Windows {
            CurrentVersion {
               Explorer {
                  'Browser Helper Objects' {
                         {77D54ACE-09A9-11D4-8ACE-00C04F542830}
                            }
                        }
                    }
                }
            }
        }
    }

ハナタロウ 2002/07/11(木) 19:15:51
K.Nさんありがとうございす。
ところで上のプログラムってMFCですよね?
MFCの勉強もしないといけないということでしょうか?

テン 2002/07/11(木) 20:56:49
>ところで上のプログラムってMFCですよね?
MFCではありません。ATLです。(アクティブ テンプレイ トライブラリ
                   ↑ ウィザードの ファイル / 新規作成 / プロジェクトタブの一番
上 ATL COM AppWizard

>MFCの勉強もしないといけないということでしょうか?
MFCの勉強は必要です。(広い意味で)...と、勉強嫌いの K.N が言うのですから確かで
す。

BHO については COM とか ATL とか IE の深い知識が必要なようですね。

http://www.xinada.ne.jp/~handa/tech/CSS/SuKiBo/record
↑の2002-6-18日あたりから現在まで BHO の作成を日記スタイルでかかれています。

K.N [HomePage] 2002/07/11(木) 21:08:16
ハナタロウさんへ
http://www.ex.media.osaka-cu.ac.jp/~a02s415/
↑ショボイページですが一度きてください。
テストが始まるのであまりあそんでもいられません。
では 、

KN 2002/07/12(金) 00:01:47
>テストが始まるのであまりあそんでもいられません。
テストが始まるので、あまりインターネットも出来なくなりそうです。

KN 2002/07/12(金) 00:36:30
と言いつつ今まで分かったことだけでも,

ウィザードで
ファイル / 新規作成 / プロジェクトタブ / ATL COM AppWizard / プロジェクト名入力
 OK
ATL COM AppWizard ステップ1のサーバータイプで ダイナミックリンクライブラリ 終
了 OK

続いて
挿入メニューで ATLオブジェクトの新規作成 
ATL オブジェクトウィザードの カテゴリー(C)でオブジェクト オブジェクト(O)で
Internet explorer を選択
ATL オブジェクトウィザードのプロパティの名前タブ ショートネームに適当な名前え
お入力 (ほかは自動で入力される)
              アトリビュートタブはそのまま で OK

以上でInternet Explorer と情報をやりとりする必要最小限のコントロールが生成され
ます。

ハナタロウ 2002/07/15(月) 17:39:28
大変わかりやすい説明ありがとう御座います。
MFCについては、どの程度の知識が必要なのでしょうか。
また、ATLやCOMについても勉強したいので、良いホームページ(初めてでもわかるような)が
あったら教えてください。
よろしくお願いします。

KN 2002/07/20(土) 21:09:18
もう、見ておられるかも?...

C++入門のホームページ
http://www.asahi-net.or.jp/~yf8k-kbys/

Win32 API入門
http://black.sakura.ne.jp/~third/win.html

ActiveXプログラミング
http://www1.plala.or.jp/knambo/vc/

初心者による VC++ プログラミング・メモ
http://isweb5.infoseek.co.jp/diary/sanaki/code/atl/prog.htm
Dr. GUI と ATL
http://www.microsoft.com/japan/developer/library/dsmsdn/msdn_093098.htm

簡単な説明
http://www.atmarkit.co.jp/icd/root/78/5798878.html

Googleをプログラムから呼び出す
http://www.atmarkit.co.jp/fdotnet/tools/google/google_01.html

InternetExplorerをCOMを使って操作する 
http://www14.big.or.jp/~ken1/tech/tech17.html

    .NETでは COM に変わるもの?(別の技術)があるようですよ。

古いスレッドには追加発言できません。