C#のWebBrowserコンポーネントからJavaScriptを実行

カテゴリー: 未分類 タグ:

System.Windows.Form.WebBrowser(IEコンポーネント)を使うと、簡単にブラウザの機能をFormに埋め込めるのだけど、中のHTMLやJavaScriptなどにアクセスする方法が無かったので…

Source code, exe (VS2005 C#2.0)

無理矢理やってみた。(前のエントリの「AmazonのURLからASINを抜き出す」を実行した所)

JavaScriptBrowser

FireBugの劣化版みたいな。

■やり方

bookmarklet形式にして、Urlプロパティに突っ込んでやると実行する

Stringscripts=textBoxScript.Text;

webBrowser.Url=newUri(“javascript:”+Uri.EscapeDataString(scripts)+”;”);//実行



もちろんGoogleMapもC#から操作できる。

JavaScriptBrowser

JavaScriptBrowser

prototype.jsとか使いたくなったら、

document.write(‘');

とかやればJSファイルの読み込みもできるはずなので色々できるね

■SimpleWebBrowser

ちなみに昨日作ったSimpleWebBrowserという

DSC00826DSC00828

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

50行もコード書いてないけど。

  1. カリメロ
    2007 年 2 月 14 日 23:46 | #1

    初めまして、カリメロと申します。

    現在C#を使ってWebBrowserコントロール
    を使ってJavaScriptをコールする方法を検索中に
    こちらのホームページを発見し、参照させて頂きました。

    おかげさまでJavaScriptをコールすることが出来ました
    有難うございます。

    さて、初めてで大変恐縮ではありますが
    質問しても宜しいでしょうか?

    実は、JavaScriptをコールすることは出来たのですが
    処理結果を参照するにはWebBrowserからどのように
    データを参照すれば宜しいのでしょうか?

    また、WebBrowserに関して知識を深めるのに
    何かよいサイトか書物はございますでしょうか?

    今までC++とVBしか経験がなく、こちらのホームページを
    参照してからC#を始めました初心者ですが
    宜しくお願いいたします。


  2. 2007 年 2 月 15 日 02:39 | #2

    カリメロさん:

    始めまして。
    残念ですが、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種類のみです。がんばってください。

  3. カリメロ
    2007 年 2 月 17 日 03:38 | #3

    shokaiさん


    いきなりの質問にご丁寧にお答えいただきまして
    誠に有難うございます。


    >残念ですが、WebBrowserコンポーネントには、内部のHTML>などの構造にアクセスする方法は無い様です。

    そうでしたか・・・C#のウォッチ画面で必死に探したのですが、アクセス出来ないのでは見つからないはずですね(ToT)


    >私が思いつくのはこの3種類のみです。がんばってください。

    凄いですね、この短期間に3パターンもですか!!。
    ネットプログラムにはなれていないもので時間はかかると
    思いますが是非是非チャレンジさせていただきます。

    無事データにアクセス出来た時はご報告いたします。

    本当に有難うございました。






  1. トラックバックはまだありません。

track feed