ホーム > コンピュータ > C# > WPF in C# > Webツール開発

ベクトルドロー・レベルゼロ+

WebBrowserクラスの解説(和訳)[C#WPF]

新規作成日 2015-09-25
最終更新日

このページについて

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);
}
ページトップへ
C#トップ
Copyright (C) 2011-2016 kukekko All Rights Reserved.
kukekko@gmail.com
ご連絡の際はアドレスの@は半角にしてください。 また、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません 」。
inserted by FC2 system