C#のWebBrowserでZoomを取得・設定する方法

C#のWindowsフォームにて、WebBrowserコントロールを使って、簡易ブラウザを作った時の話。

IEの拡大、縮小機能を独自ボタンで実装しようと思ったら、Zoom値の取得で結構ハマりました。

 

もともとは、Zoom値の初期値を100%として内部保持し、拡大ボタンで+10%、縮小ボタンで-10%としていました。

でもこれだと、タブレットでピンチイン・ピンチアウトをしたら値を反映できないんですよね。

ということで、Zoom値の取得は必須で、

  1. Zoom値を取得
  2. 拡大なら加算、縮小なら減算
  3. Zoom値を設定

という手順が必要になりました。

事前準備

では早速いきたいところですが、まずは事前準備が必要です。

スポンサーリンク

今回は、VisualStudio2013で使って説明するので、別バージョンを使っている場合は、少し方法が異なるかもしれません。

参照を追加

まずは、以下の2つの参照を追加します。

  • Microsoft.mshtml
  • Interop.SHDocVw (Microsoft Internet Controls)
Microsoft.mshtml

ソリューションエクスプローラの参照設定を右クリックし、「参照の追加」を選択します。

左側で「アセンブリ」を選択した状態で、右上の検索窓に、「mshtml」を入力します。

すると、真ん中の一覧に「Microsoft.mshtml」が表示されるので、左側のチェックを入れて「OK」ボタンをクリックします。

webBrowser1

僕の環境だけかもしれませんが、2つ表示されたので、上側にチェックを入れました。

Interop.SHDocVw (Microsoft Internet Controls)

次に、もう一度、ソリューションエクスプローラの参照設定を右クリックし、「参照の追加」を選択します。

左側で「COM」を選択した状態で、右上の検索窓に、「Microsoft Internet Controls」を入力します。

真ん中の一覧に「Microsoft Internet Controls」が表示されるので、左側のチェックを入れて「OK」ボタンをクリックします。

webBrowser2

名前が全然違うので、追加するのにかなり時間がかかりました。

現在のZoom値を取得する方法

では、ここからが実際にZoom値を取得する方法になります。

※ コード上に出てくるwebBrowserは、WebBrowserコントロールの参照です。

[補足] NGだった方法

Zoom値を設定するのにExecWBを使うので、同様に取得も可能と思いきや、例外が発生して取得できませんでした。

ネットで色々検索したけど、解決方法が分からず、辿り着いたのが今回の取得方法でした。

スポンサーリンク

Zoom値を設定する方法

今度は、Zoom値を設定する方法です。

Zoom値を%で指定します。(75%を設定するなら、75)

Zoom値を設定して拡大する方法

まとめとして、10%拡大する方法も書いておきます。

おまけ

今回紹介した、Zoom値を設定しているExecWBを使えば、IEの各種機能をカンタンに呼び出すことができるようです。

例えば、クリップボードからの貼り付けをしたい場合は、以下のようにします。(ExecWBの第一引数で処理が決まります。)