English help on website



COMの呼び出し(Ver9.35対応版)
目次− COMの呼び出し
COM(Component Object Model)の呼び出しを扱うためのマクロの文があります。(V8.00以降)

createobject関数
オブジェクトを作成します。WSHのCreateObjectと似ています。

getobject関数
オブジェクトを取得します。WSHのGetObjectと似ています。

releaseobject文
オブジェクトを解放します。

callmethod_returnstr関数
メソッドを呼び、文字列を取得します。

callmethod_returnnum関数
メソッドを呼び、数値を取得します。

callmethod_returnobj関数
メソッドを呼び、オブジェクトを取得します。

callmethod文
メソッドを呼びます。

getpropstr関数
文字列プロパティを取得します。

getpropnum関数
数値プロパティを取得します。

getpropobj関数
オブジェクトプロパティを取得します。

setpropstr文
文字列プロパティを設定します。

setpropnum文
数値プロパティを設定します。

setpropobj文
オブジェクトプロパティを設定します。

member文,member関数
callmethod,callmethod_*等やgetprop*等と同じです。
メソッド,プロパティ,型がわからないときに使用できます。

keepobject文
マクロが終了した後も解放しないようにするかどうかを指示します。

getcollection関数
コレクションの操作をします。VBScriptのfor each、JScriptのEnumeratorようなことをします。

allowobjparam文(V8.20以降)
メソッドのパラメータをオブジェクトとして解釈したり、バイナリとして解釈したりを指示します。

setcomdetachmethod文(V8.98以降)
オブジェクトが解放されるときに呼び出されるメソッドを指定します。


エラーの取得
文はresultが設定されますが、関数ではresultは設定されません。
createobject/getobject以外の関数では戻り値で成功したかどうかを知ることができないので、getresultexの10または11でエラー情報を得ることができるようになっています。

数値パラメータの扱い
数値は、パラメータとして渡すときは、32bit版秀丸エディタでも、64bit版秀丸エディタでも、32bitの数値として渡します。
(V8.98以降では、COMオブジェクト側にbool X64MACRO()という名前のメソッドがあって0以外を返したら、64bit版の通常版では64bitの数値を渡すことが可能です)
浮動小数点数版では、32bit版/64bit版でも、setfloatmodeが0でも1でも、X64MACRO()があっても、32bit整数で渡します。
(V9.00以降では、COMオブジェクト側にbool FLOATMACRO()という名前のメソッドがあって0以外を返したら、浮動小数点数の数値を渡すことが可能です)
JavaScript
JavaScriptでhidemaru.createObjectを呼んだ後は、JavaScript上のオブジェクトとして存在するだけです。
X64MACRO()やFLOATMACRO()のメソッドの存在は動作に影響がありません。

数値の返り値の扱い
返り値を数値で受け取るときは、ビット幅に関わらず、32bit版秀丸エディタでは32bitの数値に、64bit版秀丸エディタでは64bitの数値に変換して数値変数に格納されます。
浮動小数点数版では、setfloatmode 0;の場合は32bit版/64bit版に関わらず32bit整数で受け取ります。setfloatmode 1;の場合は浮動小数点数に変換して格納されます。

SafeArray
SafeArrayの場合、コレクションとしての扱いはできなくて、自動的にオブジェクトに変換されます。
参照:SafeArrayの返り値について

注意事項
WScriptオブジェクトは、wscript.exeまたはcscript.exe自身が持つオブジェクトなので、秀丸マクロから使うことはできないです。

(秀丸マクロで利用できないVBスクリプトの例)
WScript.Echo WScript.Version
WScript.Sleep 1000
WScript.StdOut.Write vbCrLf

サンプル
サンプルはこちら