はじめまして、かりんです。
現在、VC++6.0で、CHtmlViewクラスを派生させ、ブラウザをカスタマイズしています。
仕様として、
(1)HTTP、FTPのダウンロード禁止
(2)ActiveXの実行禁止
(3)Scriptの実行禁止
とあります。
これらは、IEのインターネットオプションのセキュリティで設定する事に
したのですが、(1)の場合だと、ダウンロードを実行すると、
「現在のセキュリティでは、このファイルをダウンロードできません。」の
メッセージボックスが表示されます。
((2)の場合は、「現在のセキュリティの設定では、このページのActiveX
コントロールは実行できません。・・・」のメッセージです。)
このメッセージボックスを表示しないようにすることは
可能でしょうか。
また、次に表示されるページが、禁止事項によって正常に
表示されるかされないかを、事前に検知する事は可能でしょうか。
よろしくお願いいたします。
<開発環境>
Windows 2000 SP2
VC++ 6.0 SP5
IE 5.5
>このメッセージボックスを表示しないようにすることは
>可能でしょうか。
「ちゃんと」実現するのはかなり面倒です。
どうしても実現したいとして、VC7 の CHtmlView の方が少しやり易いかもしれません。
>また、次に表示されるページが、禁止事項によって正常に
>表示されるかされないかを、事前に検知する事は可能でしょうか。
厳密には無理です。
禁止事項の種類や性質にもよりますが、不特定のページに関しては、ページを取得して
みないことには、危険かどうかを判断することはできるわけないです。
あらかじめ「危険なページのURL」がデータベースにでも登録してあって、「これから表
示しようとしているページのURL」と照合する、なんてことはできるかもしれませんが。
渋木さん、レスありがとうございます。
>「ちゃんと」実現するのはかなり面倒です。
「ちゃんと」実現しない方法とは、どのようにするのでしょうか。
また、どのような状態になるのでしょうか。
>どうしても実現したいとして、VC7 の CHtmlView の方が少しやり易いかもしれません。
そうなのですね。
VC6では、難しいんですね。
>厳密には無理です。
やはり、そうですよね。
ページを取得してみないとわからないんですね。
>「ちゃんと」実現しない方法とは、どのようにするのでしょうか。
いい加減な方法でよければ、いくらでも考えられると思います。
メッセージフックを仕掛けておいて、問題のダイアログが表示されようとするのを検出
して、それを妨害するとか。
>メッセージフックを仕掛けておいて、問題のダイアログが表示されようとするのを検出
>して、それを妨害するとか。
そのような方法しかないという事ですね。。。
わかりました。
ありがとうございました。
>そのような方法しかないという事ですね。。。
いいえ。
「ちゃんと」実装すれば、全部かどうかは試してみないと分からないですが、スマート
に回避できます。
>「ちゃんと」実装すれば、全部かどうかは試してみないと分からないですが、スマート
>に回避できます。
「ちゃんと」実装するな方法とは、どのような方法でしょうか。
CHtmlViewクラスの関数をオーバーライドしてできるのでしょうか。
IHTMLDocument2というようなインターフェイスを使用するのでしょうか。
質問ばかりですけど、よろしくお願いします。
>「ちゃんと」実装するな方法とは、どのような方法でしょうか。
ブラウザコントロールの挙動を捕捉したり制御するためには、
・ブラウザコントロールの発生するイベントを捕捉する
・コントロールサイトに IDocHostUIHandler インターフェースを実装して、ブラウザコ
ントロールからの問い合わせに答える
などが必要です。
↑で足りないようなら、もっともっと暗く深い森を踏み分けて進むことになります。
>CHtmlViewクラスの関数をオーバーライドしてできるのでしょうか。
できません。
DWebBrowserEvents で定義されているレベルのイベントなら、VC6 でも ClassWizard が
面倒をみてくれたような気がしますが、DWebBrowser2Events あたりになると、結構なコ
ードを書かないと捕捉出来なかったと思います。
コントロールサイトの実装も、VC6 ではかなり面倒です。
いずれにしろ、COMの知識と技術が不可欠です。
>IHTMLDocument2というようなインターフェイスを使用するのでしょうか。
「ブラウザコントロール」レベルの話をする上では IHTMLDocument2 インターフェース
はあまり関係ありません。
主に登場するのは、IWebBrowse2 インターフェースです。
>ブラウザコントロールの挙動を捕捉したり制御するためには、
>
>・ブラウザコントロールの発生するイベントを捕捉する
>・コントロールサイトに IDocHostUIHandler インターフェースを実装して、ブラウザコ
>ントロールからの問い合わせに答える
>DWebBrowserEvents で定義されているレベルのイベントなら、VC6 でも ClassWizard が
>面倒をみてくれたような気がしますが、DWebBrowser2Events あたりになると、結構なコ
>ードを書かないと捕捉出来なかったと思います。
う~ん、何れにしても私にはハードルが高すぎます。
COMの知識も必要ですし。
いろいろとありがとうございました。
IDocHostUIHandler インターフェースやDWebBrowser2Eventsを
使用する際には、また質問いたします。