Common Lisp で OLE ライブラリを作りはじめる
Common Lisp の OLE ライブラリ(Ruby の Win32OLE みたいなの)がなかったので作りはじめてみました。
ここ数日せっせとハックしてます。
自宅には Windows マシンがないので OS インストールからでした。
Linux マシンの qemu/kvm に Vista をインストール。
ついで Cygwin, Meadow, SBCL, SLIME, VS2008C++Express, WIN32SDK をインストール。
そしてようやく開発開始です。
C ではコードを書かず、cffi を使って Lisp のコードだけで作成する方針でいきます。
VARIANT の union にやられながら、とりあず BOOL, BST, IDispatch だけを実装して、次のコードが動くようになりました。
IE でページを表示してタイトルを取得しています。
Excel のサンプルを作りたいところですが、Excel を持っていないので。。。とても古いバージョンがどっかにあったかなぁ。
(let ((ie (create-instance "InternetExplorer.Application")))
(property ie :visible t)
(invoke ie :navigate "http://sbcl.sourceforge.net/")
(loop while (property ie :busy)
do (sleep 0.5))
(let ((document (property ie :document)))
(format t "document title is \"~a\".~%" (property document :title)))
(sleep 3)
(invoke ie :quit))
やっぱり名前は cl-win32ole ですよね。