getcollection関数(Ver9.35対応版)
目次−
COMの呼び出し−
getcollection関数
getcollection関数は、コレクションの操作をします。
VBScriptのfor eachに相当します。
例:
#objReturn = getcollection( #obj, #operation, #count );
第1パラメータの#objにはcreateobjectまたはgetobjectで取得したオブジェクトを指定します。
第2パラメータの#operationはコレクションの操作方法を指定します。
0 (または省略)で次を取得。
1 でスキップ。(#countでスキップ数を指定)
2 で最初に戻る。
3 で解放。
第3パラメータの#countは、#operationが 1 のとき、スキップする数を指定します。
サンプル
//ディスク容量一覧
//WSH(VBS)
// Set DiskSet = GetObject("winmgmts:").InstancesOf("Win32_LogicalDisk")
// for each Disk in DiskSet
// WScript.Echo Disk.FreeSpace
// next
//WSH(JScript)
// var objDiskSet = GetObject("winmgmts:").InstancesOf("Win32_LogicalDisk");
// var objForEach = new Enumerator( objDiskSet );
// objForEach.moveFirst();
// while(objForEach.atEnd() == false) {
// WScript.Echo( objForEach.item().FreeSpace );
// objForEach.moveNext();
// }
insert "\nディスク容量一覧\n";
#objWMI = getobject("winmgmts:");
#objDisks = member( #objWMI, "InstancesOf", "Win32_LogicalDisk");
#objDisk = getcollection( #objDisks, 2 ); //moveFirst()
while( 1 ) {
#objDisk = getcollection( #objDisks ); //item() and moveNext()
if( #objDisk == 0 ) break;
insert member( member( #objDisk, "Properties_", "Name" ) ) +
member( member( #objDisk, "Properties_", "FreeSpace" ) ) + "\n";
}
#objDisk = getcollection( #objDisks, 3 );
releaseobject(#objWMI);
endmacro;
SafeArray
SafeArrayの場合、コレクションとしての扱いはできなくて、自動的にオブジェクトに変換されます。
参照:
SafeArrayの返り値について