ゴミ箱.net

汚物は消毒

WebBrowserコントロールを使ってアプリケーションを操作する

キャッチフィーリングというソフトを使っていて少し妙に思ったことがある。
どうやらサーバ一覧の表示にウェブブラウザ(IEコントロール)を使っている気配がある。
なのに、ウェブブラウザに表示されたリンクをクリックしてもページが遷移することはなく、リンクに対応したサーバへの接続が行われるようになっているのだ。

つまり、アプリケーションに埋め込んだウェブブラウザがアプリケーションのGUIとして機能しているのだ。いったいどうやって作るんだろう?

Visual Studio 2008(おそらく他のバージョンでもほぼ同様)を例にとり、そのようなアプリケーションの作成方法を解説する。

まず、アプリケーションにウェブブラウザを埋め込むには、ウィンドウにWebBrowserコントロールを追加するだけでよい。
デザイナでフォームを表示し、コンポーネントからWebBrowserコントロールを探してドラッグアンドドロップをすればそれで終わりである。

次に、WebBrowserコントロールのイベントNavigatingに対するイベントハンドラを作成し、以下のようなコードを追加する。(言語はC#とする。)


if (e.Url.Scheme == "about")
{
e.Cancel = true;
//TODO: ここにリンクに対応する処理を追加する。
//e.Url.LocalPathに応じて処理を切り替える。
}

そして、WebBrowserコントロールに表示するHTMLに、「<a href="about:hoge">ほげほげ</a>」のようなタグを埋め込む。
属性hrefを、about:○○という形にしておくのがポイント。○○に設定した文字列が、上記のコードにおいてe.Url.LocalPathとして取得される。
WebBrowserコントロールに表示するHTMLを設定するには、プロパティDocumentTextにHTMLの文字列を設定する。もしくは一時ファイルを作成してメソッドNavigateによって読み込ませてもよい。

このようにすることで、<a href="about:hoge">ほげほげ</a>に対応するリンクをクリックすると、ページ遷移を行うことなくイベントハンドラが呼び出されるようになり、アプリケーション側で任意の処理を行うことができるようになる。
スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する