開発環境: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】にホワイトリストなどの処理を入れたりすると
自作のブラウザとして使いようがありそうです。