|   |  
たびたびすみません。 
 
COMを呼び出したときに、なぜか返値が得られない例がありましたので、報告します。 
環境は、XP sp2 + beta24 + カレントドライブがHDD・外部メディアとも + 持ち出し 
キットの有無ともです。 
 
具体的には、以下のコードです。 
 
#objFSO = createobject("Scripting.FileSystemObject"); 
#objFile = callmethod_returnobj( #objFSO, "GetFile", hidemarudir + "\\KEY.TX 
T"); 
$s = getpropstr( #objFile, "DateLastModified");  // *A 
message hex(getresultex(10));  // *B 
 
*A行で、本来はファイル更新日時を得られると思うのですが、返ってくる結果は""に 
なります。 
これは、対象となるファイルを変えても、またはmember関数を使ったり、str(getpro 
pnum(〜))としても同様です。 
また、その際は*B行でも0が返ります。 
ただし、正しい結果が返ってこないのは、(少なくとも私が確認した中では)Date〜で 
始まる3種類だけでほかのプロパティ(たとえばSizeなど)では適切な値になります。 
そのときは*Bでも1が返されます。 
# 意図されてのものor私のミスor私の環境だけで発生するものならすみません。 
 
なお、同じ環境で以下のコード(http://www.atmarkit.co.jp/fwin2k/operation/wsh1 
0/wsh10_03.html)を、DOSプロンプトからcscript.exeを使って実行した場合は、正し 
いプロパティを表示してくれます。 
 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.GetFile("〜") 
WScript.Echo "DateCreated      : " & objFile.DateCreated 
WScript.Echo "DateLastAccessed : " & objFile.DateLastAccessed 
WScript.Echo "DateLastModified : " & objFile.DateLastModified 
 
膨大なCOMオブジェクトの個々のプロパティに対して、「うまくいかない」ゝといち 
いち報告をあげるのもどうかと思ったのですが、同じオブジェクトのこれだけができ 
ないのと、FileSystemObject(という標準ライブラリ的なもので比較的よく使うと思 
われるオブジェクト)での事象ですので、何かの参考にしていただければと思ってい 
る次第です。 
 
			 | 
		  
	 |