C#のWebBrowserコンポーネントからJavaScriptを実行
System.Windows.Form.WebBrowser(IEコンポーネント)を使うと、簡単にブラウザの機能をFormに埋め込めるのだけど、中のHTMLやJavaScriptなどにアクセスする方法が無かったので…
Source code, exe (VS2005 C#2.0)
無理矢理やってみた。(前のエントリの「AmazonのURLからASINを抜き出す」を実行した所)

FireBugの劣化版みたいな。
■やり方
bookmarklet形式にして、Urlプロパティに突っ込んでやると実行する
Stringscripts=textBoxScript.Text;
webBrowser.Url=newUri(“javascript:”+Uri.EscapeDataString(scripts)+”;”);//実行
prototype.jsとか使いたくなったら、
document.write(‘
');
とかやればJSファイルの読み込みもできるはずなので色々できるね
■SimpleWebBrowser
ちなみに昨日作ったSimpleWebBrowserという


GoogleMapをフルスクリーンで動かす為だけのブラウザも同梱されているので良かったらどうぞ。
50行もコード書いてないけど。



初めまして、カリメロと申します。
現在C#を使ってWebBrowserコントロール
を使ってJavaScriptをコールする方法を検索中に
こちらのホームページを発見し、参照させて頂きました。
おかげさまでJavaScriptをコールすることが出来ました
有難うございます。
さて、初めてで大変恐縮ではありますが
質問しても宜しいでしょうか?
実は、JavaScriptをコールすることは出来たのですが
処理結果を参照するにはWebBrowserからどのように
データを参照すれば宜しいのでしょうか?
また、WebBrowserに関して知識を深めるのに
何かよいサイトか書物はございますでしょうか?
今までC++とVBしか経験がなく、こちらのホームページを
参照してからC#を始めました初心者ですが
宜しくお願いいたします。
カリメロさん:
始めまして。
残念ですが、WebBrowserコンポーネントには、内部のHTMLなどの構造にアクセスする方法は無い様です。
ですが、ActiveXの方のIEコンポーネントにはそれが多分あります。
http://www.microsoft.com/japan/msdn/vs/webapplication/vsgrfWalkthroughAccessingDHTMLDOMFromC.aspx
もしくは、WebBrowserコンポーネントで読み込んだHTMLの中にFlashを埋め込んでproxyとして利用し、FlashのExternalInterfaceやfscommandを用いてJavaScript->Flash->C#という通信をさせる事も多分可能です。
あとは、これも試していないのですが、JavaScriptで
http://hoge.com/hoge.html
から
http://hoge.com/hoge.html#value
にURIを書き換えて移動すれば、C#からはWebBrowserコンポーネントのURIプロパティとして値を取り出せるのではないでしょうか?
私が思いつくのはこの3種類のみです。がんばってください。
shokaiさん
いきなりの質問にご丁寧にお答えいただきまして
誠に有難うございます。
>残念ですが、WebBrowserコンポーネントには、内部のHTML>などの構造にアクセスする方法は無い様です。
そうでしたか・・・C#のウォッチ画面で必死に探したのですが、アクセス出来ないのでは見つからないはずですね(ToT)
>私が思いつくのはこの3種類のみです。がんばってください。
凄いですね、この短期間に3パターンもですか!!。
ネットプログラムにはなれていないもので時間はかかると
思いますが是非是非チャレンジさせていただきます。
無事データにアクセス出来た時はご報告いたします。
本当に有難うございました。