Private Type ULARGE_INTEGER
LowPart As Long
HighPart As Long
End Type
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32.dll" Alias "GetDiskFreeSpaceExA" _
(ByVal lpDirectoryName As String, lpFreeBytesAvailableToCaller As ULARGE_INTEGER, _
lpTtoalNumberOfBytes As ULARGE_INTEGER, lpTtoalNumberOfFreeBytes As ULARGE_INTEGER) As Long
Private Sub DrawGraph()
Dim lpFreeSpace As ULARGE_INTEGER
Dim lpUsedSpace As ULARGE_INTEGER
Dim lpTotalSpace As ULARGE_INTEGER
Dim rc
Me.Picture1.Cls
rc = GetDiskFreeSpaceEx(Me.Drive1.Drive, lpUsedSpace, lpTotalSpace, lpFreeSpace)
If rc Then
Me.Text1(0).Text = Format(Int((lpTotalSpace.HighPart * 2 ^ 32 _
+ lpTotalSpace.LowPart) / (1000 ^ 2)), "#,###")
Me.Text1(1).Text = Format(Int((lpFreeSpace.HighPart * 2 ^ 32 _
+ lpFreeSpace.LowPart) / (1000 ^ 2)), "#,###")
Me.Picture1.Line (0, 0)-((lpFreeSpace.HighPart * 2 ^ 32 _
+ lpFreeSpace.LowPart) / (lpTotalSpace.HighPart * 2 ^ 32 _
+ lpTotalSpace.LowPart) * Me.Picture1.ScaleWidth, Me.Picture1.ScaleHeight), vbBlue, BF
Me.Picture1.CurrentX = Int(Me.Picture1.ScaleWidth / 2)
Me.Picture1.CurrentY = Int(Me.Picture1.ScaleHeight / 2) - 5
Me.Picture1.Print Int((lpFreeSpace.HighPart * 2 ^ 32 _
+ lpFreeSpace.LowPart) / (lpTotalSpace.HighPart * 2 ^ 32 + lpTotalSpace.LowPart) * 100) & "%の空き"
End If
End Sub
Private Sub Drive1_Change()
Call DrawGraph
End Sub
Private Sub Picture1_Paint()
Call DrawGraph
End Sub |