2011.3.1

javascriptでWindowsも快適に

村式ブログ

Windowsを使ってるプログラマーなら、ちょっとした作業をプログラムにやらせたいと思うことがよくあると思います。
WindowsにはJScriptやVBAScriptで扱えるシェルっぽいものとしてWindows Script Host(WSH)が用意されていますが、なぜかあまり使われていない印象があります。WSHは私も使ったことがありますが、目玉商品がファイルシステムにアクセスできるオブジェクトくらいでなんとなく地味なのです。
そこで、今回はもっと使われていないDMonkeyを紹介します。

DMonkeyとは

SFjpの公式をみると「Delphiへの組み込みを目的としたECMAScriptエンジン」と書かれています。WEBプログラマーに解りやすく一言で説明するなら、javascriptで便利に使えるオブジェクトがたくさん詰まったものです。
例えばHTTPオブジェクトを使えば一行でHTMLを取ってくることができます。

var html = (new HTTP()).get('http://ville.jp');

便利なオブジェクト群の他にもClassが使えたり、別のスクリプトをインポートできたり、GUIをつくることもできますので、がっつり作り込むことも可能です。
※ここまで散々javascriptと書いてきましたがDMonkeyは正確にはECMAScriptのサブセットです。

用意されているオブジェクト

これを見ればDMonkeyで大体どんなことができるか想像できるのではないでしょうか。

Object, Global, Array, Number, Boolean, String, RegExp, Math, Date, File, Directory, Strings, Win32, Ini, RegIni, CRC, Base64, Dialog, Mutex, URL, Cookie, Response, HTTP, HTTPS, HtmlTag, HtmlParser, FileProperty, FTP, TCPSocket, Mail, POP3, SMTP, ActiveXObject, Keyboard, Mouse, Clipboard, DynaCall, Struct, StringBuffer, WScript, Enumerator, CheckListBox,

ネット系の人ならこのあたりが気になるでしょう。
HTTP, Cookie, SMTP, FTP, HtmlParser

ハードコアな人ならこの辺に目が行くと思います。
Mutex, Struct, Win32, DynaCall
昔DynaCallを使ってスクリプトからuser32.dllやkernel32.dllを叩くのが流行りました。

ファイルシステムを操作できるのはやはり便利です。
ファイルの中身を見つつ一定のルールでリネームしたりするのも、これらのオブジェクトを利用すれば簡単に書けます。
File, Directory

簡単な例

ファイルの読み書き

var f = new File('temp.txt');
try{
  f.open('w');
  f.writeln('hello');
}
catch(e){
  println(e);
}
finally{
  f.close();
}

HTTP通信

var html = (new HTTP()).get('http://ville.jp');
alert(html.indexOf('村式'.toUTF8()));

DMonkeyで操作できるエディタ

VxEditorとJmEditorというエディタはDMonkeyで扱えるように作られていて、
Editor.SelText などとして選択中のテキストの読み書きができたりします。

おわりに

DMonkeyでWindowsもハックしましょう。

公式
http://sourceforge.jp/projects/dmonkey/

VxEditor & DMonkey布教ページ
http://lukewarm.s41.xrea.com/index.html

この記事を書いた人

中川尚(メガネ)