00時56分41秒CScriptでの標準入出力まあ、特に難しいことはないのだが、コンソールへの入出力+αのまとめってことで。シンプルな「1行出力」。ホストがWScript.exeの場合はポップアップメッセージになるので注意。次に入力だが、これはWScript#StdInオブジェクトを経由する。WScript.StdIn.ReadLine();WScript#StdInプロパティは、fsoのTextStreamオブジェクトとほぼ同等のメンバを備えているので他にReadメソッドも使えるが、結局Enterキーが必要になるので実質的にこのReadLineメソッドを使用することになる。ちなみにホストがWScript.exeの場合、StdInプロパティへのアクセスはエラーになるのでCScript実行時のみ使用すること。改行を出力しない文字列出力は、WScript#StdOutプロパティを経由して、こんな感じで行う。);WScript#StdOutもTextStreamと同様に(出力専用だが)扱えるのでWriteLineメソッドも使用できる。この場合は、WScript#Echoと同様に改行込みで出力される。WScript実行時にエラーになるのはStdInと同様。おまけになるが、CScript起動でもポップアップメッセージは使用できる。WScriptオブジェクトではなく、WshShellオブジェクトを使用する。);このコードはホストに依存しないので、WScriptだろうがCScriptだろうが、さらにはHTAだろうがWshShellオブジェクトをcreateできるなら実行可能。Popupメソッドは指定秒後に自動的に閉じるなど、WScript#Echoよりも機能があるのでリファレンスを確認してみると使い道がいろいろあるかも。ユーティリティオブジェクトにまとめてみるここまでの説明で普通に入出力はできるが、なんとなくユーティリティオブジェクトにまとめたサンプルを載せてみる。ついでに起動ディレクトリ(実行中のjsファイルがあるディレクトリ)などの情報もまとめて「JScript」オブジェクトをでっち上げてみた。);コマンドライン引数の展開機能やWshShell#Execで外部プロセスを実行した結果を取得する機能などを追加したりするとちょっとしたライブラリになるかと。02時15分18秒EnumeratorオブジェクトActiveXObjectと同様なJScript固有オブジェクトにEnumeratorがある。あとはfileを操作する}のように、atEnd()メソッドがtrueを返すまでmoveNext()でループ処理を行い、コレクション要素を取得するのにitem()メソッドを使用する、という流れで使用するが、ちょっと独特のインターフェイスなためちょっと面倒に感じる。以前のコマンドライン引数の展開ではラッパーオブジェクトを返す$E()関数を定義したが、今回は直接Enumerableにしてみる。いっても別に面倒なことがあるわけではなく、_each()を実装後にEnumerableインターフェイスを追加するだけ。);こうして拡張されたEnumeratorを使用して、C:\直下のファイルを列挙するサンプルは以下のようになる。JScript.consoleは前回のエントリで試したオブジェクトとする。);この方法なら、コレクションを配列にキャッシュしないので、たとえば1,000単位や10,000単位のファイルがあるディレクトリの操作でもたいしてメモリを消費せずにすむ(って前も書いたな)。サンプルコードまとめとして、前回のエントリの定義+ライブラリロードを加えたサンプルを以下に示す。dummy.jsとprototype.jsは同じディレクトリにあるものとしている。);JScript.console.readln();arguments#calleeを使用した再起処理なんかもできるので、個人的には結構お勧め。prototype.jsをインクルードできればよいので、当然HTAでも使用できる。MOONGIFT)Java製のMySQLフロントエンド。ドラッグドロップによるテーブル移動はともかく、グラフ機能が楽しそうだ。GIGAZINEこれは面白いインターフェイスだ。Controlというコンポーネントの存在を知った。これはVBScriptやJScriptなどのActiveScriptを実行するためのActiveXコントロールで、以前から存在は知っていたが、UIコンテナがない環境でもサクっと使用できると知り目から鱗が落ちた。コードなど論より証拠、JScriptからVBScriptを実行するサンプルを以下に示す。);ie.Quit();最初の3行の定義をするだけで、JScript単体では不可能な「ActiveXオブジェクトの型の名前を取得する」という機能をVBSの力を借りて実現できる。これで何がうれしいの?VBSにあってJSにない機能というのはいくつかあるが、特にブラウザ上でのpromptに相当するInputBox関数は使える局面があると思う。そのほか、上記のサイトではADODB.Streamのバイナリデータの参照にVBSを経由させる方法を紹介していた。そんだけといえば、そんだけだけど。上記サイトではこのテクニックの他にJScriptでExcelなどを扱った後にGCを強制発動させる隠しメソッド「CollectGarbage」なんかについても言及されている。メモ」と「スクリプトの文字コード処理に関する覚書」は非常に役立つと思う。吊ブックマークレットtumblrのキーボードショートカットが便利になっとる。Chrome編dataスキームの画像をブロックしてみるローカルストレージを確認したり消したりするブックマークレットそうそう、いまさらTwitter始めました。(9)このブログについてJavaScriptとかC#とかPHPとか。