none
JavaScript内の変数値をC#プログラム内で利用する方法 RRS feed

  • 質問

  • あるホームページのHTMLソースコードをJavascriptで解析し、電話番号だけを抽出したのですが、そのJavascriptで抽出した電話番号をVisual C# Express Editionで作成したプログラム内に取り込む方法を見つける事が出来ません。

    Javascriptで得た値をC#プログラムに取り込む方法をどなたかご教授頂けないでしょうか? どうぞ宜しくお願い致します。

    2007年1月17日 14:39

すべての返信

  • その JavaScript はどこにあってどう動かしてるんですか? C# プログラムとやらとの関係は?

    取りあえず、ファイルに出力してやれば良いんじゃないかなとか。

    2007年1月17日 14:53
  • 流れとしては、javascriptからvbscriptの関数を読んで、その中で.Netのクラスをインスタンス化してあげればいいんじゃないかと思います。vbscriptはCOM相互呼び出しが可能です。
    2007年1月17日 15:28
    モデレータ
  • Hongliang 様、trapemiya 様 早々のご回答有難うございました。

    頂いたアドバイスを元に早速チャレンジしてみたいと思います。何せC#超初心者なので、またお世話になるかもしれませんが、どうぞ宜しくお願い致します。 有難うございました。

    2007年1月19日 0:49
  • たぶんやりたいことは、クライアントコールバックじゃないかな。。。
    サンプルは
    http://blogs.sqlpassj.org/mitsugi/archive/2006/01/17/15833.aspx
    にあります。
    2007年1月19日 2:33
  • おがわみつぎ 様へ

    大変曖昧な質問内容なのに、サンプルコードまで付けてご回答下さいまして有難うございました。

    早速にクライアントコールバックについて調べさせて頂きましたが、ただ残念な事に私はC#を始めたばかりの超初心者でして、今回作成中のアプリはクライアントコールバックを利用できるほど高度なものではありません。。。

    しかしクライアントコールバックについて勉強する機会を下さって感謝です。おがわみつぎさんのアドバイスがなければ、クライアントコールバックの存在自体気づかなかったと思います。いつかクライアントコールバックを使えるようなソフトを開発できるよう頑張ります! 有難うございました。

    2007年1月19日 16:05
  • trapamiya 様へ

    いつも大変お世話になっております。 C#超初心者のFuNeedsHelpです。 trapamiyaさんのご回答に対して、新たなご助言を頂けないでしょうか?

     trapemiya さんからの引用
    流れとしては、javascriptからvbscriptの関数を読んで、その中で.Netのクラスをインスタンス化してあげればいいんじゃないかと思います。vbscriptはCOM相互呼び出しが可能です。

    trapamiyaさんのご回答にある、”javascriptからvbscriptの関数を呼んでその中で.Netのクラスをインスタンス化する”までは、悪戦苦闘の末、何とかたどり着いたのですが。。。

    「どの.Netのクラスのインスタンスを、どの様に利用すれば、HTMLファイル内のJavascriptによって抽出した電話番号を、VisualC#で作成した WindowsApplication1.sln に渡す事が出来るのか?」という部分につまずいております。 再度、trapamiyaさんのご助言を頂けないでしょうか? 宜しくお願いいたします。

     

    私のアプリの動作ついての補足説明: 

    ①C:¥...¥解析.html ファイル内のJavascriptによって任意のWebサイトのHTMLソースコードを解析し、そのWebサイト内の電話番号のみを抽出して、 Javascript内の変数 TelNum に格納する。   

    ② VisualC# で作成した C:¥...¥WindowsApplication1¥WindowsApplication1.sln 内でこの変数 TelNum を利用して電話帳アプリなど?を作成する。 

    ①の処理については作成済みなのですが、②の部分(HTMLファイル内にあるJavascriptの変数値を、どの様にしてWindowsApplication1.slnに渡すかと言う部分)の解決策を探しております。

    2007年1月19日 17:41
  • つまり、解析.html と WindowsApplication1.exe の二つの実行すべきものがあると。.sln って仰ってますけど、別に VS 上で解析.html で処理されたデータを直接使う訳じゃないですよね?

    ……やっぱりファイルを経由するのが一番手っ取り早いと思うなぁ。

    んんん? WindowsApplication1.exe は解析.html から直接起動するんじゃなくて別に手動で立ち上げるんですかね? どうにもイメージがつかめませんが。

    // 私個人的に一番手っ取り早いのは HTML の解析から全て C# で書く事だな……。

    2007年1月19日 19:14
  •  FuNeedsHelp さんからの引用

    私のアプリの動作ついての補足説明: 

    ①C:¥...¥解析.html ファイル内のJavascriptによって任意のWebサイトのHTMLソースコードを解析し、そのWebサイト内の電話番号のみを抽出して、 Javascript内の変数 TelNum に格納する。   

    ② VisualC# で作成した C:¥...¥WindowsApplication1¥WindowsApplication1.sln 内でこの変数 TelNum を利用して電話帳アプリなど?を作成する。 

    ①の処理については作成済みなのですが、②の部分(HTMLファイル内にあるJavascriptの変数値を、どの様にしてWindowsApplication1.slnに渡すかと言う部分)の解決策を探しております。


    この流れであれば、Hongliangさんが言われているように、全てC#でやってしまうのが普通です。
    例えば、株価を表示しているページから株価を得るなどを目にします。
    ただし、htmlの構造が変わると、その度にC#のプログラムを作り直す必要があります。

     FuNeedsHelp さんからの引用

    「どの.Netのクラスのインスタンスを、どの様に利用すれば、HTMLファイル内のJavascriptによって抽出した電話番号を、VisualC#で作成した WindowsApplication1.sln に渡す事が出来るのか?」という部分につまずいております。 再度、trapamiyaさんのご助言を頂けないでしょうか? 宜しくお願いいたします。

    私のイメージは、IEで右クリックして表示されるメニューを追加し、そこからjavascript -> vbscript -> C#という流れを想像していました。C#のdllは、dllを作成するプロジェクトのプロパティで、
    1.アプリケーション -> アセンブリ情報 -> アセンブリをCOM参照可能にする。
    2.ビルド -> COM相互運用機能の登録にチェックする。
    でいいんじゃないかと思います。

    ただ、アプリの動作環境、動作仕様から受ける感じでは、最初に書きましたように、C#で直接HTMLを解析する方がいいんじゃないかと思います。 以下がサンプルです。 

      SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer();

       IE.Visible = true;

     

       object Dummy = System.Type.Missing;

     

       IE.Navigate("http://hoge.moge.jp", ref Dummy, ref Dummy, ref Dummy, ref Dummy);

     

       while (IE.Busy) { } ;

       while (((mshtml.HTMLDocument)IE.Document).readyState != "complete") { } ;

    2007年1月20日 2:57
    モデレータ
  • Hongliang様、 trapemiya様 へ 

    毎回のご回答本当に有難うございます。 こんなに頻繁にしかも素早くご助言を頂けるので、私みたいなC#超初心者でも、「鬼に鉄棒」と言った気分でプログラミングにチャレンジでき、感謝の気持ちで一杯です! 本当に本当に有難うございます!!!

    さて、私のソフト開発についてですが、やはりお二人が勧めて下さっている様に、今回のソフトはC#一本で作成してみる事にします。 始めは私自身C#を勉強したてだったもので、ソフト開発はC#で。。。と意気込んでいたのですが、IEとかHTML解析とか色々と調べているうちに Javascriptと言う物もあるんだ。。。 > これを使うの。。。? > 使うんだー。。。 > 使わなきゃー。。。 という具合に勝手に思い込んでしまっていたと思います。 (その結果、大変お騒がせしてしまい、恐縮しております。) ですので、まずC#一本でこのソフトを完成させてみたいと思います。

    そして今回 Javascript や VBScript にも初めてチャレンジしたので、バージョン2でこれらScriptの経験を生かしてみようかな。。。(素人考えで甘すぎますか?)と考えております。

    それでは早速、C#でHTMLの解析にチャレンジしてみます。 また(かなりの確立で)お世話になると思いますが、その時はどうぞ宜しくお願い致します。

    FuNeedsHelp

    2007年1月20日 18:40