質問者
C++とJavaScript間でのデータのやり取り

質問
-
はじめまして。
今、VC++アプリケーションから、JavaScriptへデータを渡し、その処理結果をVC++アプリに返す方法を模索しています。
VC++アプリケーションからデータを渡す方法はわかったのですが、JavaScriptからデータを渡す方法がわかりません。
JavaScriptのfunctionの引数の説明には、データを受取るという記述しか見えないようなのですが、これは、引数を使って返すことが出来ないということなのでしょうか。
恥ずかしながら、JavaScriptの方は初心者なので、参考資料等教えていただけると幸いです。
また、JavaScriptをコールするVC++アプリが、EXEアプリであっても、COMであっても、動作に違いは無いでしょうか。
よろしくお願い致します。
すべての返信
-
R.Kume さんからの引用 今、VC++アプリケーションから、JavaScriptへデータを渡し、その処理結果をVC++アプリに返す方法を模索しています。
JavaScript はどうやって動かしてるんでしょうか?
Windows Scripting Engine 経由でしょうか? それとも、ブラウザコントロール上で動いているやつのことでしょうか?
R.Kume さんからの引用 VC++アプリケーションからデータを渡す方法はわかったのですが、JavaScriptからデータを渡す方法がわかりません。
VC++ からのデータの引渡しはどうやってますか?
R.Kume さんからの引用 JavaScriptのfunctionの引数の説明には、データを受取るという記述しか見えないようなのですが、これは、引数を使って返すことが出来ないということなのでしょうか。
戻り値を受け取ることは出来ますが、C/C++ でありがちな、引数で渡したものをすり替えるような操作は出来ません。
R.Kume さんからの引用 恥ずかしながら、JavaScriptの方は初心者なので、参考資料等教えていただけると幸いです。
JavaScript の文法について知りたいわけではないですよね?
JavaScript を解釈・実行するコンポーネントの実装は各社各様なので、自分の使っているコンポーネントについて知りたいなら、そのベンダの提供している資料を参考にするのが筋です。
Windows Scripting に関しては MSDN Library にある程度情報があると思いますが、具体的にどんな情報が必要でしょうか?
R.Kume さんからの引用 また、JavaScriptをコールするVC++アプリが、EXEアプリであっても、COMであっても、動作に違いは無いでしょうか。
原則、それほど違いは無いはずですが、最終的には場合によりけりです。
スクリプトとホストのインターフェースの取り方や、スクリプト中で別の COM/ActiveX を使ったりといった諸条件で状況が変化します。
-
渋木さん、お返事有難う御座います。
>JavaScript はどうやって動かしてるんでしょうか?
Windows Scripting Engine 経由です。実を言うと、開発前段階でどのようなことが出来るのかの調査中なのです。質問を出した後、MSDNで提供されているサンプルを探し出すことが出来、多少見えてきました。
> JavaScript を解釈・実行するコンポーネントの実装は各社各様なので、自分の使っているコンポーネントについて知りたいなら、そのベンダの提供している資料を参考にするのが筋です。
ご指摘有難う御座います。今後、その方向で調べていきたいと思います。
あまりにも抽象的過ぎな質問で申し訳ありませんでした。
-
R.Kume さんからの引用
>JavaScript はどうやって動かしてるんでしょうか?Windows Scripting Engine 経由です。
なら、アプリケーションからスクリプトに対して適当なディスパッチオブジェクトを公開してやって、そのプロパティにスクリプトから戻したい値をセットするのが良いと思います。
R.Kume さんからの引用
> JavaScript を解釈・実行するコンポーネントの実装は各社各様なので、自分の使っているコンポーネントについて知りたいなら、そのベンダの提供している資料を参考にするのが筋です。ご指摘有難う御座います。今後、その方向で調べていきたいと思います。
と言っても、Windows Scripting の内側の情報ってとっても少ないんですけどね (^^;
おそらく、この件の調査に少なくとも数日から十数日はかけていると思いますが、同じようなことを JScript.NET で実現するなら、半日~数日で実現できるはずですよ。
-
まずは、IActiveScriptインターフェースを調べてみるといいと思います。
もっとも、それなりにCOMの知識がないと、難しいかもしれません。あとは、"Microsoft Scripting Control"を使うと、簡単だと思います。
■IActiveScript - MSDN
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/IActiveScript.asp