IWebBrowserなどから、ウインドウの表示状態を知りたい

[戻る]
たっく 2008/02/18(月) 23:00:55
お世話になっております。


現在開いているIEで、どのエクスプローラーバーが表示されているか、
または、表示されていないか。
表示されているとしたら、どのエクスプローラーバーなのか。
ツールバーは表示されているか、などの情報を取得したいのですが、

そのような情報を IWebBrowser などから取得することは可能でしょうか?

開発環境は VisualStudio 2003 です。
よろしくお願いします。

シャノン 2008/02/19(火) 11:26:04
標準的なメニューバー、アドレスバー、ツールバー、ステータスバーであれば、それぞれ
IWebBrowser2::get_MenuBar、get_AddressBar、get_ToolBar、get_StatusBar で、表示状
態を取得できそうですね。
その他、個別のアドインツールバーとなると、IWebBrowser2::ShowBrowserBar で表示さ
せることはできますが、表示状態の取得は難しそうです。
IBandSite というインターフェイスを使えば、表示状態の取得もできると思いますが、
IWebBrowser2 から IBandSite を得る方法がわかりませんでした。

たっく 2008/02/19(火) 21:43:14
素早い回答ありがとうございます。


IWebBrowser2 以外の方法で IBandSite を取得する方法はあるのでしょうか?

それか、条件を変えて、このCLSIDのエクスプローラーバーが表示されているか
などを調べることはできますでしょうか?

IEのエクスプローラーバーを表示するようなエクステンションボタンを押したときに、
表示の時は、非表示。
非表示の時は、表示という動きをしているので、それを調べることは可能なのかなと
思いましたが、どう動いているのかがわかりませんでした。

シャノン 2008/02/19(火) 22:40:15
> IWebBrowser2 以外の方法で IBandSite を取得する方法はあるのでしょうか?

確認していませんが、IEのアドインの中からならばIObjectWithSite::SetSite の引数に
渡される IUnknown から取得可能であるという情報はあります。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1093957&SiteID=7

ただし、ここには、IEの外からはIServiceProvider::QueryServiceで取得できるとも書
いてありますが、CoCreateInstance( CLSID_InternetExplorer, ... )で得た 
IWebBrowser2からIServiceProviderは手に入るものの、そこからIBandSiteを取得できま
せんでした。

たっく 2008/02/23(土) 15:19:59
お世話になっております。

私も、IWebBrowser2からIServiceProviderを取得することはできましたが、
IBandSite は取得できませんでした。

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