概要
WebBrowserクラス(外部サイト) で紹介されているサンプルコードを参考に、実際に簡単なアプリケーションを作成しました。
新規に、Webページを表示するプログラムを作成する場合は、WebBrowserクラスではなく、WebViewコントロール (Windows Community Toolkit v3.0に含まれている)を使用することをお勧めします。
プログラム
xaml
<Window x:Class="WebBrowser001.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="19"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0">
<Button DockPanel.Dock="Right" Click="goNavigateButton_Click" Width="40">Go</Button>
<TextBox x:Name="addressTextBox"/>
</DockPanel>
<Grid Grid.Row="1">
<WebBrowser x:Name="myWebBrowser" />
</Grid>
</Grid>
</Window>
xaml.cs
using System;
using System.Windows;
namespace WebBrowser001
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
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);
}
}
}
実行し、Webサイトを表示してみる
プログラムを実行すると、ウィンドウが表示されます。
yahoo トップページのURL(http://www.yahoo.co.jp/)を入力して、Goボタンを押すと、yahoo トップページが表示されますが、ブラウザのバージョンに関する注意書きが表示されます。
このことから、古いアプリケーションのブラウザからアクセスされるWebサイトは、Internet Explorer 7に対応させておく必要を考えておく必要があることがわかります。
WebBrowserクラスの内部エンジンのバージョンを変更する
WebBrowserクラスの内部エンジンには、Internet Explorer が使われており、デフォルト設定では、Internet Explorer 7と同等の状態です。また、レジストリを操作することで、Internet Explorer 11までバージョンを上げることができます。
そこで、レジストリを操作して、内部エンジンのバージョンを変更します。
変更方法は、以下のサイトの内容を参考にしました。
Windowの検索で、「resedit」を検索し、レジストリエディタを起動します。
「コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION" 」で右クリックして、「新規」→「DWORD(32ビット)値(D)」を選択します。
名前を「WebBrowser001.exe」に変更し、右クリックして、修正を選択します。
表示されるウィンドウで値を入力します。
再起動します。
yahoo トップページの表示は、変わりませんでした。
そこで、以下のサイトで確認しました。
その結果、Internet Explorer 11と認識されています。ちなみに、Windows 10で使用しています。