中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

C#.netでwebBrowserを作成してみる。【IE11】

開発環境:visual studio2015
開発言語:C#.net

.netFrameworkにはWebBrowserコントロールというものがあって
アプリケーション内にブラウザを組み込むことが可能です。
今回はこれを使ってみました。



事前作業としてFormにwebBrowserコントロールを貼り付けただけです。

まずはソースです。
やっていることは
①起動時にyahooのHPを表示しています。
②新しいウィンドウで開くのを禁止しています。
③読み込み完了時の処理にインラインフレームを考慮しています。
④docファイル(外部ファイル)の表示を禁止しています。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace tnvWebViewer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate(new Uri("https://www.yahoo.co.jp/"));
        }

        private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
        {
            // 新しいウィンドウで開くのを禁止する
            e.Cancel = true;
        }

        private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            // ページ移動するときに呼ばれる関数
            // 表示したくないページだった場合はcancel処理をする
            // 例えば
            // docの保存Dialogを開かないようにする
            if (e.Url.ToString().EndsWith("doc"))
            {
                e.Cancel = true;
                return;
            }
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            //インラインフレームを含む場合イベントが呼ばれるのでページ本体の読み込み完了でイベント処理を行う。
            if (e.Url.ToString() != webBrowser1.Url.ToString()) return;
            // 読み込み完了時の処理を下記に記載する


        }
    }
}


このままでは【IE7】で表示されてしまいますので
【IE11】で表示するためにレジストリに値を追加します。
今回はアプリケーション名を【testBrowser.exe】として
下記を記載したbatファイルを実行します。

reg add "HKEY_CURRENT_USER\software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION" /v testBrowser.exe /t REG_DWORD /d 11001


これでアプリを実行すると【IE11】でBROWSERが起動します。
【WebBrowser1_Navigating】にホワイトリストなどの処理を入れたりすると
自作のブラウザとして使いようがありそうです。