C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: ブラウザコントロールの警告非表示


(過去ログ 94 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■55940 / inTopicNo.1)  ブラウザコントロールの警告非表示
  
□投稿者/ 高橋 (1回)-(2010/12/20(Mon) 10:05:48)

分類:[.NET 全般] 

はじめまして、高橋と申します。

開発環境は「Microsoft Visual C# 2010 Express」です。


ブラウザコントロールで、レスポンス向上のために画像を非表示にする
方法を調べていた際に、以下のページを見つけました。

http://slingkid.blogsome.com/2006/05/26/blocking-images-similar-to-outlook


こちらを利用してみたのですが、サイトによっては以下の警告ダイアログが
表示されてしまいます。(例. http://www.yahoo.co.jp/)


> 次のいずれからの理由により1つまたはそれ以上のActiveXコントロールを表示できませんでした:
>
> 1) 現在のセキュリティ設定により、ActiceXコントロールの実行が禁止されている。
> 2) ある1つのコントロールの発行者をブロックしている。
>
> これによりページが正しく表示されない場合があります。


画像を非表示にするために、ActiveXを利用しているようなのですが、
できればこの警告を非表示にしたいと思います。

ページ側の変更はできないため、ブラウザコントロール側でこの警告
表示を抑制することはできないでしょうか?


もしくは、ActiveXを利用しないで、画像を非表示にする方法があれば
そちらでも構いません。


よろしくお願いたします。

引用返信 編集キー/
■55942 / inTopicNo.2)  Re[1]: ブラウザコントロールの警告非表示
□投稿者/ 魔界の仮面弁士 (1995回)-(2010/12/20(Mon) 10:30:11)
2010/12/20(Mon) 10:40:52 編集(投稿者)

No55940 (高橋 さん) に返信
> 次のいずれからの理由により1つまたはそれ以上のActiveXコントロールを表示できませんでした:
画像の表示設定は、DLCTL_DLIMAGES ですよね。
DLCTL_NO_DLACTIVEXCTLS や DLCTL_NO_RUNACTIVEXCTLS や DLCTL_NO_SCRIPTS は
どのように設定されましたか?
http://msdn.microsoft.com/en-us/library/aa741313.aspx#Download_Control


> できればこの警告を非表示にしたいと思います。
未検証ですが、ScriptErrorsSuppressed プロパティでは駄目でしょうか。
もしくは、ActiveX 側の Silent プロパティとか。


> 画像を非表示にするために、ActiveXを利用しているようなのですが、
まぁ、そもそも WebBrowser 自体が ActiveX コントロールですしね。
.NET 版はそれをカプセル化しているだけであり、webBrowser1.ActiveXInstance から
元となっている WebBrowser 本体を得られます。

画像を表示してよいか/BGM再生を行うか/スクリプトは起動してよいかといった情報は、
WebBrowser 側からホストアプリケーションに問い合わせが行われ、そこで決定されます。
その際に用いられるのが、COM の IOleClientSite インターフェイスなどです。

IOleClientSite を実装したアプリ側では、その問い合わせに対して
DISPID_AMBIENT_DLCONTROL のディスパッチIDを通じて、戻り値として
各種のビットフラグとして回答します。今回の場合は DLCTL_DLIMAGES の部分ですね。

> もしくは、ActiveXを利用しないで、画像を非表示にする方法があれば
> そちらでも構いません。
ローカルプロキシを実装して、画像のダウンロードをブロックしてしまうとか。
引用返信 編集キー/
■55945 / inTopicNo.3)  Re[2]: ブラウザコントロールの警告非表示
□投稿者/ 魔界の仮面弁士 (1996回)-(2010/12/20(Mon) 10:48:42)
No55942 (魔界の仮面弁士) に追記
>> 次のいずれからの理由により1つまたはそれ以上のActiveXコントロールを表示できませんでした:
> 画像の表示設定は、DLCTL_DLIMAGES ですよね。
> DLCTL_NO_DLACTIVEXCTLS や DLCTL_NO_RUNACTIVEXCTLS や DLCTL_NO_SCRIPTS は
> どのように設定されましたか?

気になったので、提示のサンプルを確認してみました。

>> 方法を調べていた際に、以下のページを見つけました。
>> http://slingkid.blogsome.com/2006/05/26/blocking-images-similar-to-outlook

該当箇所としては、このあたりですね。

[ComVisible(true)]
public partial class Form1 : Form, IOleClientSite   
{
    BrowserOptions _options = BrowserOptions.DontRunActiveX 
                            | BrowserOptions.NoClientPull
                            | BrowserOptions.NoJava
                            | BrowserOptions.NoActiveXDownload;
}

これを見る限りでは、
 BrowserOptions.Images            … Off (画像をダウンロードしない)
 BrowserOptions.DontRunActiveX    … On  (ActiveX を実行しない)
 BrowserOptions.NoActiveXDownload … On  (ActiveX をダウンロードしない)
となっていますが、画像は禁止、ActiveX は許可というのであれば、
 BrowserOptions.Images            … Off (画像をダウンロードしない)
 BrowserOptions.DontRunActiveX    … Off (ActiveX を実行する)
 BrowserOptions.NoActiveXDownload … Off (ActiveX をダウンロードする)
とすべきかと思います。現状のコードはどのように設定されていますか?

引用返信 編集キー/
■55953 / inTopicNo.4)  Re[3]: ブラウザコントロールの警告非表示
□投稿者/ 高橋 (2回)-(2010/12/20(Mon) 13:57:00)
魔界の仮面弁士さん、はじめまして。 高橋です。

早速のご返信ありがとうございます。

>>画像の表示設定は、DLCTL_DLIMAGES ですよね。
>>DLCTL_NO_DLACTIVEXCTLS や DLCTL_NO_RUNACTIVEXCTLS や DLCTL_NO_SCRIPTS は
>>どのように設定されましたか?
>
> 気になったので、提示のサンプルを確認してみました。

お手数をおかけいたしました。m(_ _)m

サンプルは私には中身が複雑過ぎて、ほとんど理解できていなかったので、
そのまま利用していました。

こちらの設定でActiveXを実行しないようにしていたから、警告が出ていた
だけなのですね。

> となっていますが、画像は禁止、ActiveX は許可というのであれば、
>  BrowserOptions.Images … Off (画像をダウンロードしない)
>  BrowserOptions.DontRunActiveX … Off (ActiveX を実行する)
>  BrowserOptions.NoActiveXDownload … Off (ActiveX をダウンロードする)
> とすべきかと思います。現状のコードはどのように設定されていますか?

目的としては画像の非表示だけですので、以下のように変更したところ、
希望の動作となりました。

> [ComVisible(true)]
> public partial class Form1 : Form, IOleClientSite
> {
> BrowserOptions _options = BrowserOptions.NoClientPull
> | BrowserOptions.NoJava
> | BrowserOptions.NoActiveXDownload;
> }

BrowserOptions.NoActiveXDownloadのオプションは付けたままでも
利用したいサイトでは問題なかったので、そのまま残しています。

ご紹介いただいたページを見ると他にもブラウザのいろいろな制御が
できるのですね。 勉強になりました。


ちなみに、以下のご提案についても補足しておきます。

> 未検証ですが、ScriptErrorsSuppressed プロパティでは駄目でしょうか。

こちらは元々「true」に設定していたのですが、警告は出てしまってました。


> もしくは、ActiveX 側の Silent プロパティとか。

これはどのように設定するのでしょうか? サンプルで言うと以下の辺りでしょうか?

> IOleObject obj = (IOleObject)this.webBrowser1.ActiveXInstance;
> obj.SetClientSite(this);

「ActiveX」「Silentプロパティ」等のキーワードで検索してみたのですが、
検索の仕方が悪いのか思うようなページは見つけられませんでした。

もしこれで対応できるのなら、オプションの「DontRunActiveX」をオンにして
おいてもよさそうなので、教えていただけると嬉しいです。

当初の目的は達成できましたので、お手隙の時で構いません。


> > もしくは、ActiveXを利用しないで、画像を非表示にする方法があれば
> > そちらでも構いません。
> ローカルプロキシを実装して、画像のダウンロードをブロックしてしまうとか。

なるほど、そういう方法もあるのですね! こちらは何となくイメージできそうです。 


今回は魔界の仮面弁士さんのお陰で当初の希望通りに動作することができました。
ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -