しかし、BからKB(MB)(GB)への計算方法が分からず、悪戦苦闘しています。
以下が、適当に作った容量計算方法です。(一部おかしい所もあるかもしれませんが、気にしないでください(^^;;;)
コード: 全て選択
Sub MainWnd_CommandButton2_Click()
Dim DSKFRE As ULARGE_INTEGER
Dim DSKFRE2 As ULARGE_INTEGER
Dim DSKFRE3 As ULARGE_INTEGER
/*Dim Secs As Dword
Dim SecSize As Dword
Dim FreeClusters As Dword
Dim Clusters As Dword*/
'If GetDiskFreeSpace("C:\",VarPtr(Secs),VarPtr(SecSize),VarPtr(FreeClusters),VarPtr(Clusters))=FALSE THEN MessageBox(0,0,0,0)
If GetDiskFreeSpaceEx("C:\",DSKFRE,DSKFRE2,DSKFRE3)=FALSE Then MessageBox(0,0,0,0)
'MessageBox(0,Str$(DSKFRE.HighPart),Str$(DSKFRE.LowPart),0)
Dim a As Int64
a=DSKFRE3.LowPart
'Dim a As DWord
'a=FreeClusters
If a < 1000 Then 'B
MessageBox(0,Str$(a)+"B",0,0)
ElseIf a < 1000000 Then 'KB
MessageBox(0,Str$(a)+"KB",0,0)
ElseIf a < 1000000000 Then 'MB
/* Do
If a<1000 Then ExitDO
a=a/1024
Loop*/
a=a/1024/1024
MessageBox(0,Str$(a)+"MB",0,0)
ElseIf a < 1000000000000 Then 'GB
/* Do
MessageBox(0,Str$(a)+"GB",0,0)
If a<1000 Then ExitDO
a=(a/1024/1024)
Loop*/
a=a/1024/1024/1024
a=a*2
MessageBox(0,Str$(a)+"GB",0,0)
ElseIf a < 1000000000000000 Then 'TB
MessageBox(0,Str$(a)+"TB",0,0)
End If
End Sub