2012-01-24 12 views
4

私はいくつかのページを表示するためのC#で読み込まれたページがSystem.Windows.Forms.WebBrowserのエラーページまたは有効なページであるかどうかを調べる方法

System.Windows.Forms.WebBrowser 

コントロールを使用しています。私は、ユーザーが存在しないページのURLをクリックしたときにカスタム作業をしたい。ブラウザが表示されたら、私はロードページとエラーページが区別さできるように

は基本的に私はいくつかの値を設定する次のようなメッセージ

The page cannot be displayed 
The page you are looking for is currently unavailable. The Web site might be experiencing technical difficulties 

にはどうすればいいのステータスを得ることができますか?

+0

これは実際には機能しません。多くのISPはジャンクページを広告するようなものにリダイレクトします。 8.8.8.8 –

答えて

2

あなたが基本となるのActiveX実装にWebBrowserコントロールをキャストした場合、あなたはNavigateErrorイベントにアクセスすることができます。

注:SHDocVwへの参照を追加する必要があります。混乱させると、これはCOMタブに "Microsoft Internet Controls"という名前のc:\ windows \ system32 \ ieframe.dllというパスがあります。

private void button1_Click(object sender, EventArgs e) 
     { 
      //Note: you need to wait until the ActiveXInstance property is initialised. 
      var axWebBrowser = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance; 
      axWebBrowser.NavigateError += axWebBrowser_NavigateError; 
      webBrowser1.Url = new Uri("http://www.thisisnotavaliddomain.com"); 
     } 

     void axWebBrowser_NavigateError(object pDisp, ref object URL, ref object Frame, ref object StatusCode, ref bool Cancel) 
     { 
      //handle your error 
     } 
+0

これは私のために働いて、私webrowserクラスの過度の拡張子を保存しました。 – CodeMe

1

WebBrowserコントロールでCreateSinkメソッドを使用すると、基になるWebBrowser ActiveXコントロールのNavigateErrorイベントにアクセスできます。 System.Windows.Forms.WebBrowserコントロールはWebBrowser ActiveXコントロールのマネージラッパーですが、そのActiveXコントロールのすべての機能をラップしません。 NavigateErrorイベントは、管理されていないActiveX Webブラウザコントロールで使用できます。 CreateSinkを使用すると、イベントを処理できるように、System.Windows.Forms.WebBrowserコントロールの機能を拡張できます。ドキュメントから

:あなたは 管理されていないWebブラウザーのActiveXコントロールを使用してOLEの開発に精通しているし、Windowsの 機能があるWebBrowserコントロールをフォーム延長したい場合は

この方法は便利です ActiveXコントロールのラッパーです。この 拡張機能を使用して、ラッパーコントロールによって提供されていない のActiveXコントロールからのイベントを実装できます。

MSDNは、ここに完全な例があります。

+0

のような評判の良いDNSサーバーが必要です。私はこれを試していませんが、他の答えは私に拡張クラスの実装を保存しました。 – CodeMe

+0

これはうれしいことです。私のアプローチではSHDocVwへの参照を追加する必要がなくなりますが、確かに私のアプローチは他の答えより複雑です。 – rsbarro

+0

私はプロではありませんが、このアセンブリを参照すると、クライアントまたはその他の問題で展開する際に問題が発生しますか? – CodeMe

関連する問題