English help on website



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の返り値について