JScriptでInputBoxを
職場で趣味的にJScriptでぐりぐりとツールをつくったりするのですが、VBSには言語レベルで存在するInputBoxが、JScriptにはなくて泣けました。
ていうゆか、ライブラリレベルの挙動じゃないのInputBox!
・・・そんなたいそうなもんじゃないですよね・・・
しょうがないのでいろいろあさって、自分なりにJScriptで使えるInputBoxオブジェクトを作ってみました。
まずは、IEの力を借りなくちゃならなかったりするやつ。
もちょっとなんかないですかね・・・
// インプットボックスプロンプトオブジェクト inputbox.js //インプットボックスプロンプトオブジェクトの生成 //ib = new InputBox(); //インプットボックスを表示 //strInput = ib.prompot('何か入力してください','デフォルト文字列'); -> 入力 された文字列 //引数 メッセージ文字列 入力時デフォルト文字列 //インプットボックスプロンプトオブジェクトの破棄 やっておいたほうがいい //ib.discard(); //インプットボックスプロンプトオブジェクト var InputBox = function() { this.aplIe = new ActiveXObject('InternetExplorer.Application'); this.aplIe.navigate('about:blank'); while (this.aplIe.Busy) Sleep(10); } InputBox.prototype.prompt = function (strMsg, strDefault) { return this.aplIe.Document.Script.prompt(strMsg, strDefault); } InputBox.prototype.discard = function () { this.aplIe.Quit(); this.aplIe = null; }
JavaScriptは好きなんだけど、なんとかならないかなぁ。
:
:
とおもったら、JScriptからVBScriptオブジェクトのようなものをつくってやればよさそうということがわかりました。
こっちのほうがInternetExplorerを立ち上げる必要もなくて、軽いですねきっと。
var InputBox = function () { this.script = new ActiveXObject('ScriptControl'); this.script.Language = 'VBScript'; this.script.AddCode('Function IB(p,t,d)\n IB=InputBox(p,t,d)\n End Function'); } InputBox.prototype.prompt = function(strMsg, strDefault) { return this.script.Run('IB', strMsg, '入力してね', strDefault); } InputBox.prototype.discard = function() { this.script = null; }
こっちのほうがいいかも。
WindowsScriptingHostは、なんだかもう、なんでもありですね。