JScriptでinputBoxを使う
2008年3月25日
マイクロソフトの新しいシェル、PowerShellについて色々と見ていて、私自身が一番分かりやすい説明だと思ったのが、次の記事。
Windowsスクリプティング環境比較:PowerShell vs WSH
PowerShell自身について何か書くのは別の機会に譲るとして、これを読んで面白いことに気がついたので、メモ。この記事の中から、マイクロソフトの次のページにリンクされている。
Converting VBScript Commands to Windows PowerShell Commands
VBScriptでできることは一通りPowerShellでできるらしい。で、思い出したのが、inputBox。これは、WSHにおいてはVBScriptにだけ実装されている機能で、JScriptでは使えない。PowerShellではどうかと、調べてみた。
InputBox: OK, this was a tough one.
『was』と書かれていることから分かるように、解決されている。その方法は、MSScriptControl.ScriptControlというCOMオブジェクトを作成し、そこでVBScriptのコードを実行させるというもの。なるほど。
ということは、同じ方法がJScriptでも使えるはず。これは無理だとずっとあきらめていたことなので、この方法を知って嬉しかった。次のコードで実行できる。
実行結果は、次のとおり。
Windowsスクリプティング環境比較:PowerShell vs WSH
PowerShell自身について何か書くのは別の機会に譲るとして、これを読んで面白いことに気がついたので、メモ。この記事の中から、マイクロソフトの次のページにリンクされている。
Converting VBScript Commands to Windows PowerShell Commands
VBScriptでできることは一通りPowerShellでできるらしい。で、思い出したのが、inputBox。これは、WSHにおいてはVBScriptにだけ実装されている機能で、JScriptでは使えない。PowerShellではどうかと、調べてみた。
InputBox: OK, this was a tough one.
『was』と書かれていることから分かるように、解決されている。その方法は、MSScriptControl.ScriptControlというCOMオブジェクトを作成し、そこでVBScriptのコードを実行させるというもの。なるほど。
ということは、同じ方法がJScriptでも使えるはず。これは無理だとずっとあきらめていたことなので、この方法を知って嬉しかった。次のコードで実行できる。
var obj=WScript.CreateObject("MSScriptControl.ScriptControl"); obj.language="vbscript"; obj.addcode("function getInput() getInput = inputbox(\"Message box prompt\",\"Message Box Title\") end function"); var i=obj.eval("getInput"); WScript.Echo(i);
実行結果は、次のとおり。
コメント
月 (2011年6月22日 19:53:04)
> obj.addcode("function getInput() getInput = inputbox(\"Message box prompt\",\"Message Box Title\") end function");
> var i=obj.eval("getInput");
var i=obj.eval("inputbox(\"Message box prompt\",\"Message Box Title\")");
これだけでもいいですね。
> var i=obj.eval("getInput");
var i=obj.eval("inputbox(\"Message box prompt\",\"Message Box Title\")");
これだけでもいいですね。
月 (2011年6月22日 20:32:01)
あ、ただ、大変参考になりました。というか知りませんでした。