COMの呼び出し(Ver8.22対応版)
目次− COMの呼び出し COM(Component Object Model)の呼び出しを扱うためのマクロの文があります。(V8.00以降) createobject関数 WSHのCreateObjectと似ています。 失敗時は0が返ります。 ロードされるのは現在の秀丸エディタについてだけなので、nexthidemaru文等で他の秀丸エディタに切り替わった場合は改めてcreateobjectしなおす必要があります。 #obj=createobject("ProgID"); getobject関数 WSHのGetObjectと似ています。 失敗時は0が返ります。 ロードされるのは現在の秀丸エディタについてだけなので、nexthidemaru文等で他の秀丸エディタに切り替わった場合は改めてgetobjectしなおす必要があります。 #obj=getobject("filename.ext"); #obj=getobject("moniker:"); #obj=getobject("","ProgID"); releaseobject文 オブジェクトを解放します。 releaseobject #obj; callmethod_returnstr関数 メソッドを呼び、文字列を取得します。 $s=callmethod_returnstr( #obj, $name, ... ); callmethod_returnnum関数 メソッドを呼び、数値を取得します。 #n=callmethod_returnnum( #obj, $name, ... ); callmethod_returnobj関数 メソッドを呼び、オブジェクトを取得します。 #obj=callmethod_returnobj( #obj, $name, ... ); callmethod文 メソッドを呼びます。 callmethod #obj, $name, ... ; getpropstr関数 文字列プロパティを取得します。 $s=getpropstr(#obj,$name, ... ); getpropnum関数 数値プロパティを取得します。 #n=getpropnum(#obj,$name, ... ); getpropobj関数 オブジェクトプロパティを取得します。 #obj=getpropobj(#obj,$name, ... ); setpropstr文 文字列プロパティを設定します。 setpropstr #obj,$name,$s; setpropnum文 数値プロパティを設定します。 setpropnum #obj,$name,#n; setpropobj文 オブジェクトを設定します。 setpropobj #obj,$name,#objSet; member文,member関数 callmethod,callmethod_*等やgetprop*等と同じです。 メソッド,プロパティ,型がわからないときに使用できます。 $s=member(#obj,$name, ... ); #n=member(#obj,$name, ... ); #obj=member(#obj,$name, ... ); member #obj,$name, ... ; keepobject文 マクロが終了した後も解放しないようにするかを指示します。 keepobject #obj, #mode; #mode=0の場合、マクロ終了後に自動解放します。 #mode=1の場合、マクロ終了後に自動解放しません。#objは再利用できません。 #mode=2の場合、マクロ終了後に自動解放しません。#objは再利用でき、後から再びマクロでreleaseobjectできます。 keepobject文を呼ばないときは、#mode=0の状態。 keepobject文を呼んで#mode省略時は#mode=1と同じ。 sleep文 一定時間待ちます。(ms) sleep 1000; getcollection関数 WSHのfor eachのようなことをします。(コレクションの操作) #obj = getcollection( #obj, #operation, #count ); #operationはコレクションの操作方法を指定します。 0 (または省略)で次を取得。 1 でスキップ。 2 で最初に戻る。 3 で解放。 #countは、#operationが 1 のとき、スキップする数を指定します。 allowobjparam文(V8.20以降) パラメータに1を指定すると、メソッドのパラメータが数値のとき、オブジェクトとして解釈することを許可します。 パラメータに2を指定すると、メソッドのパラメータが文字列のとき、16進数2桁が連続するバイトの配列(いわゆるバイナリデータ)として解釈することを許可します。メソッドの戻り値やプロパティが取得されるときは、バイナリを文字列として取得することを許可します。 0を指定するといずれも許可しません。 初期値は0で、数値はオブジェクトではなく数値そのまま、文字列は文字列のままとして解釈されます。 1や2を指定すると、数値や文字列としての解釈に失敗した場合にオブジェクトやバイトの配列として解釈します。 第2パラメータ以降を指定すると、メソッドのパラメータの種類を順番に1つずつ明示的に指定します。0はそのまま、1のとき数値はオブジェクト、2のとき文字列はバイナリデータとして最初から解釈します。 例: allowobjparam 1; callmethod #obj, $methodname, #obj1, #obj2; allowobjparam 0; 例: allowobjparam 2; $strBinary = getpropstr( #obj, $binaryproperty ); callmethod #obj, $methodname, $strBinary; allowobjparam 0; 例: allowobjparam 2, 0, 0, 1, 2; $binaryRet = callmethod_returnstr( #obj, $methodname, #num1, $str2, #obj3, $binary4 ); allowobjparam 0; エラーの取得 文はresultが設定されますが、関数ではresultは設定されません。 crateobject/getobject以外の関数では戻り値で成功したかどうかを知ることができないので、getresultexでエラー情報を得ることができるようになっています。 サンプル //プログラム起動 //WSH(VBS) // Set objShell = WScript.CreateObject("WScript.Shell") // objShell.Run "notepad.exe" #objShell = createobject("WScript.Shell"); callmethod #objShell, "Run", "notepad.exe"; endmacro; |