このページについて
WebBrowserクラスの解説が、英語表記でしたので、和訳しました。
原文の所在
WebBrowserクラス(リンク切れです)
和訳
解説
WebBrowserコントロールは、次の機能を提供します。:
ナビゲーション:
Source、Navigate、NavigateToStream、NavigateToStringとRefresh。
ナビゲーションの寿命:
Navigating、NavigatedとLoadCompleted。
ナビゲーションの更新履歴:
CanGoBack、GoBack、CanGoForwardとGoForward。
WPF/HTML相互接続性:
InvokeScriptとObjectForScriptingとDocument。
WebBrowserは、WebBrowserを格納しているWPFアプリケーションのセキュリティ制約によって、結合されています。:
- WebBrowserが、完全に信頼できるWPFアプリケーションに格納されるとき、(スタンドアロン・アプリケーション、例えば)、 WebBrowserは、どんな場所からでも、HTML文書をホストをすることができます。
- WebBrowserが、部分的に信頼できるWPFアプリケーションに格納されるとき、(XBAP、例えば)、WebBrowserは、 元のアプリケーション・データ・ファイルのサイトにある文書を一つだけ、格納することができます。詳細については、 WPF アプリケーションのリソース ファイル、コンテンツ ファイル、およびデータ ファイルを参照してください。
注意
WebBrowserコントロールは、内部で、ネイティブWebBrowser ActiveXコントロールのインスタンスを生成します。 WPFは、WebBrowser ActiveXコントロールに機能コントロールを適用することで、セキュリティ機構を有効にします。 機能コントロールは、XBAPとスタンドアロン・アプリケーションのために、違う適用がされます。 一部のアプリケーションは、悪意のある内容を実行することを妨げるために、追加された機能コントロールを適用する必要があります。 詳細は、セキュリティ(WPF)とWebBrowserコントロール概要とチュートリアルの「WebBrowserコントロールと機能コントロール」項目を参照してください。
例
次の例は、マークアップだけを使用して、HTML文書でWebBrowserを操作するために、どのように設定するかを示しています。
webページを格納するウェブ・ブラウザを制御する。
Xaml
<!-- Web Browser Control that hosts a web page. -->
<!-- webページを格納するウェブ・ブラウザを制御する。 -->
<WebBrowser x:Name="webBrowser" Source="http://msdn.com"
Width="600" Height="600" />
次の例は、マークアップと分離コードを用いて、文書を操作するために、どのように、WebBrowserを設定するかを示しています。
Xaml
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBox x:Name="addressTextBox" Width="200" />
<Button Click="goNavigateButton_Click">Go</Button>
</StackPanel>
<WebBrowser x:Name="myWebBrowser" />
</StackPanel>
C#
private void goNavigateButton_Click(object sender, RoutedEventArgs e)
{
// Get URI to navigate to
// 操作するために、URIを取得します
Uri uri = new Uri(this.addressTextBox.Text, UriKind.RelativeOrAbsolute);
// Only absolute URIs can be navigated to
// 絶対URIだけで、操作することができます
if (!uri.IsAbsoluteUri)
{
MessageBox.Show("The Address URI must be absolute eg 'http://www.microsoft.com'");
return;
}
// Navigate to the desired URL by calling the .Navigate method
// .Navigateメソッドを呼ぶことで、望むURLに移動します
this.myWebBrowser.Navigate(uri);
}
次の例は、WebBrowserコントロールを使用して、NewWindow2イベントと同じようなイベントを、どのように処理するかを示します。 この例は、using System.Runtime.InteropServicesのSHDocVw.dllへの参照を必要とします。; ステートメントとwebBrowser1という名前のWebBrowserコントロール。
C#
public MainWindow()
{
InitializeComponent();
var serviceProvider = (IServiceProvider)webBrowser1.Document;
if (serviceProvider != null)
{
Guid serviceGuid = new Guid("0002DF05-0000-0000-C000-000000000046");
Guid iid = typeof(SHDocVw.WebBrowser).GUID;
var webBrowserPtr = (SHDocVw.WebBrowser)serviceProvider
.QueryService(ref serviceGuid, ref iid);
if (webBrowserPtr != null)
{
webBrowserPtr.NewWindow2 += webBrowser1_NewWindow2;
}
}
}
private void webBrowser1_NewWindow2(ref object ppDisp, ref bool Cancel)
{
// Handle the event.
// イベントを処理します。
}
[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("6d5140c1-7436-11ce-8034-00aa006009fa")]
internal interface IServiceProvider
{
[return: MarshalAs(UnmanagedType.IUnknown)]
object QueryService(ref Guid guidService, ref Guid riid);
}