自作ツールバーをIEに設定するには?


ジンベイ  2005-02-07 23:28:59  No: 56287

初めまして、ジンベイという者です。VC++をはじめて約2ヶ月です。
開発環境は「VC++6.0・Win2000」になります。

MFC AppWizard(exe)のダイアログベースを元にしてツールバー状の
ウインドウを作成しました。

本来は、IEのツールバーに追加するようにしたかったのですが、方法が
分からなかったのでとりあえずウインドウとして作成しました。

この、ツールバー状のウインドウをIEに設定するにはどうしたらよいで
しょうか?(IEが起動すると必ずくっついている様にしたい)

MFC AppWizard(exe)のダイアログベースで作成したウィンドウになにか
設定を追加すればIEに組み込むことができるのでしょうか?

それとも、最初にベースを作成する時に別な方法で作成しないと組み込む
ことは難しいのでしょうか?

参考資料を色々見ましたが、作成したツールバーの子に対してウィンドウ
が親と言う一対一の関係の説明しかなく、一つのツールバーが複数の
ウィンドウに対して設定される方法を見つけることが出来なかったので
こちらで伺おうと思った次第です。

ご存知の方いらっしゃいましたら、宜しくお願い致します。


みけにゃん  2005-02-15 17:49:11  No: 56288

それってGoogleとかYahoo!とかの検索バーみたいなのの事でしょうか?
以前知り合いが同じようなものを作っていてそれをもらった時は
DLLになっていて、regserver何とかで登録していたのを覚えています。

作り方は全然分からないのでなんとも言えないのですがDLLベースの
ツールバーウインドウではないかなぁ?と思います。


ジンベイ  2005-02-16 18:54:48  No: 56289

みけにゃん樣、お返事ありがとうございます。

>それってGoogleとかYahoo!とかの検索バーみたいなのの事でしょうか?
まさにその通りです。機能的には似たように作ることが出来たのですが
IEにくっつけることが出来ずに困っておりました。

>DLLになっていて、regserver何とかで登録していたのを覚えています。
この方法の登録後、立ち上げたすべてのIEにバーがくっついていますで
しょうか?それならば私が知りたかったことに近いように思われます。

>DLLベースのツールバーウインドウではないかなぁ?と思います。
「ツールバーウインドウ」で検索しましたがそれらしい情報は見つかり
ませんでした。これはツールバーにくっついたままではなく、離れて
独立したウインドウ状になるものを仰っているのでしょうか?

書込みをしてから暫く経っていたので他の書込みを見ていましたら
同じようなタイトルがあったのでそちらも参考にしたいと思います。
もっと調べてみます。

>以前知り合いが同じようなものを作っていて・・・
これってどこかで公開していますでしょうか?でしたらサイトの
アドレスを教えていただければ助かります。お願い致します。


シャノン  2005-02-16 22:17:48  No: 56290

IE ツールバーは、「DeskBand」と呼ばれる、シェル拡張の一種です。
COM を使って作ることになります。

サンプルはこの辺かな。
http://www.codeproject.com/atl/ietoolbartutorial.asp
http://www.codeproject.com/wtl/toolband.asp


ジンベイ  2005-02-17 19:55:45  No: 56291

シャノン樣、お返事ありがとうございます。

>サンプルはこの辺かな。
はい、こちらのサイトはチェックしておりましが、英文だった為に
早々に退散してしまいました。(お恥ずかしい限りです)
暫くして再度試みましたが『ATL オブジェクト ウィザード』のカテゴリに  
「RadBytes」が見つからず、またしても降参してしまった次第です。
なにやら専用ツールを(二件も)ダウンロードしないといけないようで
躊躇していたところです。

このツールを使わずに VC++(6.0) だけで開発するのはやはり難しいので
しょうか?自分なりに情報を集めてみましたがこれと言ったものは発見
できず、COMの本も読み始めたのですが「理解」と言うにはまだまだ
程遠く読めば読むほど袋小路に入り込んでいる状態です。
(VC++始めて約2ヶ月ほどでは無理なのかなぁ・・・)

ド素人でも理解できる情報がございましたら大変助かりますので引き続き
宜しくお願い致します。


YOU  2005-02-17 23:19:40  No: 56292

サンプルソースをいろいろと変えて作ってみたらいかがでしょうか?
ちなみにマイクロソフトのサンプルはここにありますよ。
http://support.microsoft.com/kb/q246234/


ジンベイ  2005-02-18 00:22:23  No: 56293

YOU樣、お返事ありがとうございます。
新しい情報ありがとうございました。

>ちなみにマイクロソフトのサンプルはここにありますよ。
>http://support.microsoft.com/kb/q246234/
早速ダウンロードを実行し、ビルドしたところ以下のエラーメッセージが
出力され終了してしまいました。

  C:\〜\KBComboBox.cpp(84) : error C2065: 'UrlEscape' : 
    定義されていない識別子です。cl.exe の実行エラー

原因調査しサンプルの内容を確かめたいと思います。
また何か情報等ございましたら引き続き宜しくお願い致します


YOU  2005-02-18 01:04:12  No: 56294

Platform SDKが古いせいでしょうね。
新しいものにすれば通ると思いますが、環境が変わってしまうので
注意が必要かと思います。
必要ないのであれば、コメントにすればいいかと思います。

一応、Platform SDK の最新版(?)が取得できるリンク
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/


ジンベイ  2005-02-18 02:18:13  No: 56295

YOU樣、お返事ありがとうございます。

早速  Platform SDK の最新版をダウンロードしまして再度ビルドしましたが
同じ結果になりました。( Platform SDK は、念のため全部落としました)

そこで、コメントにしてコンパイルをしたら正常終了しました。
但し以下の3箇所をコメントとしました。

CString CKBComboBox::CanonicalizeString(CString str, SearchType* psearchtype)
{
  〜
    // Direct Q# reference
    if (str[0] == '#')
    {
      〜
    }
    else
    {
    *psearchtype = st_Keywords;
    // Escape string to be permissible on URL
    CString curStr = outstr;
    DWORD cchBuffer = 1;
//  TCHAR temp;
//  HRESULT hrUE = UrlEscape(curStr, &temp, &cchBuffer, NULL);
    LPTSTR pOutStr = outstr.GetBuffer(++cchBuffer);
//  UrlEscape(curStr, pOutStr, &cchBuffer, NULL);
    outstr.ReleaseBuffer(cchBuffer);
  }
  return outstr;
}

そこで、直ぐにビルドしたのですが以下のメッセージが表示されエラーに
なりました。

-------------------構成: KBBar - Win32 Unicode Release MinDependency--------------------
リンク中...
LINK : fatal error LNK1104: ファイル "mfc42u.lib" を開けません。
link.exe の実行エラー

KBBar.dll - エラー 1、警告 0

再度原因調査しサンプルの内容を確かめたいと思いますので
引き続きご協力頂けますよう宜しくお願い致します。


tetrapod  2005-02-18 04:46:33  No: 56296

mfc42u.lib は MFC の UNICODE 版ライブラリなので
VC++6 のインストーラを使ってカスタムインストールを選び、
MFC UNICODE ライブラリをインストールするにチェックを入れて実行。

その後もう一度 VS6 Service Pack 6 をインストールしましょう。


YOU  2005-02-18 18:57:48  No: 56297

>早速  Platform SDK の最新版をダウンロードしまして再度ビルドしましたが
>同じ結果になりました。( Platform SDK は、念のため全部落としました)

「ツール」→「オプション」の「ディレクトリ」タブのリストには
Platform SDKをインストールしたパスを追加しましたか?
「インクルード ファイル」と「ライブラリ ファイル」を変更する
必要があるかと思います。
※見当はずれでしたらごめんなさい。

>そこで、直ぐにビルドしたのですが以下のメッセージが表示されエラーに
>なりました。

Unicode Release MinDependency ではなく、Release MinDependency または
Debugでビルドしてもいいかと思います。
DebugでビルドすればIEを起動してすぐに確かめられるかな?


ジンベイ  2005-02-18 19:27:29  No: 56298

tetrapod樣、YOU樣、お返事ありがとうございます。

>tetrapod樣

朝一で掲示板を開くと、tetrapod樣の書込みがありましたので即実行しました。
結果は無事にビルドまで完了いたしました。

ビルド完了後、IEを開きますとなにやら見慣れぬツールバーが・・・
[表示]-[ツールバー]をクリックすると[KBBar]の文字が追加されていました。

tetrapod樣、ご指導ありがとうございました。

>YOU樣

丁度、書込み頂いた時に上記結果が判明致しました。
せっかく書き込んで頂いたのに申し訳ありませんでした。
ただ、YOU樣の情報のおかげでこのサンプルを知ることができましたこと
感謝しております。ありがとうございました。

このサンプルをこれから解析し、MFC AppWizard(exe)のダイアログベースに
貼り付けた機能を盛り込みたいと思います。

ゴールはまだ先の為、またお力をお借りすることになると思いますので
引き続きご指導頂きますよう宜しくお願い致します。


ジンベイ  2005-02-19 00:53:08  No: 56299

サンプルプログラム(KBBar)を見て気がついたのですが、COMを現している
フライパンマーク(ここでは IKBBarBand )が一つしか設定されていません。

自分で環境を作成した時には、フライパンマークが二つ作成されていました。
(作成手順は、新規作成で「ATL COM AppWizard」を選び、次の「ATLオブジェクト
ウィザード」で「オブジェクト」を追加する際「シンプルオブジェクト」にして
いましが、これだとクラスの下に一つと、「IDL ソース ファイル」内に一つ
できてしまいました。

プロジェクトは「ATL COM AppWizard」で良いと思うのですが、[ATLオブジェクト
の新規作成]での[オブジェクト]の設定が[シンプルオブジェクト]で良いのか
それとも別のオブジェクトなのか、ご教授下さいますようお願い致します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加