IEからのイベントの取得 – プログラミング – Home

IEからのイベントの取得
 
通知
すべてクリア

[解決済] IEからのイベントの取得


かりん
 かりん
(@かりん)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

はじめまして、かりんです。
現在、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


引用未解決
トピックタグ
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

>このメッセージボックスを表示しないようにすることは
>可能でしょうか。

「ちゃんと」実現するのはかなり面倒です。

どうしても実現したいとして、VC7 の CHtmlView の方が少しやり易いかもしれません。

>また、次に表示されるページが、禁止事項によって正常に
>表示されるかされないかを、事前に検知する事は可能でしょうか。

厳密には無理です。

禁止事項の種類や性質にもよりますが、不特定のページに関しては、ページを取得して
みないことには、危険かどうかを判断することはできるわけないです。

あらかじめ「危険なページのURL」がデータベースにでも登録してあって、「これから表
示しようとしているページのURL」と照合する、なんてことはできるかもしれませんが。


返信引用
かりん
 かりん
(@かりん)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

渋木さん、レスありがとうございます。

>「ちゃんと」実現するのはかなり面倒です。

「ちゃんと」実現しない方法とは、どのようにするのでしょうか。
また、どのような状態になるのでしょうか。

>どうしても実現したいとして、VC7 の CHtmlView の方が少しやり易いかもしれません。

そうなのですね。
VC6では、難しいんですね。

>厳密には無理です。

やはり、そうですよね。
ページを取得してみないとわからないんですね。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

>「ちゃんと」実現しない方法とは、どのようにするのでしょうか。

いい加減な方法でよければ、いくらでも考えられると思います。

メッセージフックを仕掛けておいて、問題のダイアログが表示されようとするのを検出
して、それを妨害するとか。


返信引用
かりん
 かりん
(@かりん)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

>メッセージフックを仕掛けておいて、問題のダイアログが表示されようとするのを検出
>して、それを妨害するとか。

そのような方法しかないという事ですね。。。
わかりました。

ありがとうございました。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

>そのような方法しかないという事ですね。。。

いいえ。

「ちゃんと」実装すれば、全部かどうかは試してみないと分からないですが、スマート
に回避できます。


返信引用
かりん
 かりん
(@かりん)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

>「ちゃんと」実装すれば、全部かどうかは試してみないと分からないですが、スマート
>に回避できます。

「ちゃんと」実装するな方法とは、どのような方法でしょうか。
CHtmlViewクラスの関数をオーバーライドしてできるのでしょうか。
IHTMLDocument2というようなインターフェイスを使用するのでしょうか。

質問ばかりですけど、よろしくお願いします。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

>「ちゃんと」実装するな方法とは、どのような方法でしょうか。

ブラウザコントロールの挙動を捕捉したり制御するためには、

・ブラウザコントロールの発生するイベントを捕捉する
・コントロールサイトに IDocHostUIHandler インターフェースを実装して、ブラウザコ
ントロールからの問い合わせに答える

などが必要です。

↑で足りないようなら、もっともっと暗く深い森を踏み分けて進むことになります。

>CHtmlViewクラスの関数をオーバーライドしてできるのでしょうか。

できません。

DWebBrowserEvents で定義されているレベルのイベントなら、VC6 でも ClassWizard が
面倒をみてくれたような気がしますが、DWebBrowser2Events あたりになると、結構なコ
ードを書かないと捕捉出来なかったと思います。

コントロールサイトの実装も、VC6 ではかなり面倒です。

いずれにしろ、COMの知識と技術が不可欠です。

>IHTMLDocument2というようなインターフェイスを使用するのでしょうか。

「ブラウザコントロール」レベルの話をする上では IHTMLDocument2 インターフェース
はあまり関係ありません。

主に登場するのは、IWebBrowse2 インターフェースです。


返信引用
かりん
 かりん
(@かりん)
ゲスト
結合: 23年前
投稿: 13
Topic starter  

>ブラウザコントロールの挙動を捕捉したり制御するためには、

>・ブラウザコントロールの発生するイベントを捕捉する
>・コントロールサイトに IDocHostUIHandler インターフェースを実装して、ブラウザコ
>ントロールからの問い合わせに答える

>DWebBrowserEvents で定義されているレベルのイベントなら、VC6 でも ClassWizard が
>面倒をみてくれたような気がしますが、DWebBrowser2Events あたりになると、結構なコ
>ードを書かないと捕捉出来なかったと思います。

う~ん、何れにしても私にはハードルが高すぎます。
COMの知識も必要ですし。

いろいろとありがとうございました。
IDocHostUIHandler インターフェースやDWebBrowser2Eventsを
使用する際には、また質問いたします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました