エラーになってしまいますが
バージョンは262です。
> GetDiskFreeSpaceEx関数を使えばよいでしょう。
> ABのULARGE_INTEGER構造体は少々曲者ですが,
> 別の宣言を作ってごまかすと言う方法もあります。
>
コード:
#strict
> #prompt
>
> Dim FreeSpace As QWord
> GetDiskFreeSpaceExAsQWord("C:\", FreeSpace, ByVal 0, ByVal 0)
>
> Print StringFormatByteSize(FreeSpace)
>
> Declare Function GetDiskFreeSpaceExAsQWord Lib "kernel32" Alias "GetDiskFreeSpaceExA" (
> ByVal pDirectoryName As *Byte,
> ByRef FreeBytesAvailableToCaller As QWord,
> ByRef TotalNumberOfBytes As QWord,
> ByRef TotalNumberOfFreeBytes As QWord) As Long
>
> Declare Function StrFormatByteSize64 Lib "shlwapi.dll" Alias "StrFormatByteSize64A" (
> value As Int64,
> pszBuf As *Byte,
> uiBufSize As DWord) As *Byte
>
> Function StringFormatByteSize(value As Int64) As String
> Dim buffer[ELM(32)] As Byte
> StrFormatByteSize64(value, buffer, Len(buffer))
> StringFormatByteSize = buffer
> End Function
> 空き容量の取得自体はGetDiskFreeSpaceExAsQWordを使用するだけですが,
> それだけでは意味のないプログラムになるので,この例では適当な単位に切り上げた文字列へ変換してくれるStrFormatByteSize64関数(要IE5)と
> それをString型対応させたStrFormatByteSizeを使って,ユーザーが使える空き容量をPrintで表示させています。