|
たびたびすみません。
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(という標準ライブラリ的なもので比較的よく使うと思
われるオブジェクト)での事象ですので、何かの参考にしていただければと思ってい
る次第です。
|
|