WebBrowserのJavaScriptを無効化する


C#のFormsApplicationにはWebBrowserという便利なコントロールがあるのですがいまいち融通が利かず、昔のIEをそのままはめ込んだだけというお粗末な仕様になっています。

今回はJavaScriptの無効化の方法。普段仕様することはあまりない気がしますが備忘録としてまとめておきます。

はじめに

昔のプロジェクトを漁ったら出てきたものです。既にライブラリ化されていたものを逆コンパイルして取り出したもので、動作は確認しましたがソースコードは無茶苦茶です。とりあえず動作さえすればいいという方は下の方にダウンロードリンクを貼ってありますのでそこからダウンロードしてください。

記事書き終わってコードを見返したのですがとんでもないコードですね…コードの内容に参考にはならないかも

インターフェースから実装していく

WebBrowserから直接JavaScriptを無効化する手段はないため、IOleClientSiteというインターフェースからWebBrowserをコントロールして上げる必要があります。

GUIDから直接インターフェースを実装。このインターフェースを使用して実装していきます。

仕組み的にはWebBrowserのActiveXInstanceのClientSiteをこのクラスにくくりつけて操作している感じ。

JavaScriptの無効化に特化しているので最低限のコードのみ。

ダウンロード

ソースコードのダウンロードはこちらからどうぞ。列挙体とか他の必要なコードもこちらに入っています。

使い方

WebBrowserを貼っているフォームのクラスにWebBrowserContainerのクラスの変数/プロパティを宣言する

操作するWebBrowserを入れ、JavaとかJavaScriptとか動作させたくないものを列挙体で指定すればOK

これでJavaScriptを動作させずにページを表示することができます。

スクリーンショット 2017-03-30 18.27.13

まとめ

IOleClientSiteインターフェースから操作することができる。それ以外の方法もあるみたいだけどこれが一番簡単かも。

一度コンパイルされたコードは人間が読むものではない

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">