Gauche-OLE を更新しました。
http://saito.s4.xrea.com/software/Gauche-OLE-0.7.tar.gz
いくつかのバグ修正の他、以下の機能追加をおこないました。
一気に後始末
オブジェクトを解放する手続き ole-release! は、従来はオブジェクトひとつを対象にしていましたが、複数のオブジェクトを受取ることが出来るようになりました。 また、無引数で呼出すと過去に生成した全てのオートメーションオブジェクトを一気に解放します。
オートメーションオブジェクトを忘れずに解放 (参照カウンタの減少) するのが面倒だと思った方がいるかもしれません。 実際には解放の必要がある場合と無い場合があります。 その違いはオートメーションサーバがアウトプロセスの場合かインプロセスの場合かの違いです。 サーバがクライアント (この場合は Gauche がクライアントということになる) と同じプロセスで動いている場合にはクライアントの終了と一緒に終了するので問題ないのですが、そうでない場合はオブジェクトの解放 (参照カウンタの減少) をおこなわずに終了すると既に不要になったにもかかわらずオートメーションサーバが無駄に居残り続けるということが起こります。
OLE オートメーションの仕組をよく理解できないならば、とりあえずスクリプトの最後には ole-release! を呼出すことと覚えておけばよいでしょう。
起動中のオートメーションサーバに接続
従来はオートメーションサーバを起動することで機能を使い始めることしか出来ませんでしたが、既に起動しているオートメーションサーバに接続する手続き ole-connect を追加しました。
従来からあった make-ole は CoCreateInstance 相当、今回追加した ole-connect は GetActiveObject 相当であるという説明で、 OLE オートメーションを理解している人にはわかるでしょう。
Document ID: 98a58a1abdf87f756bd55b8752880497