Program backs up its data to floppies, but some users want to use Zip disks. Does anyone know of an API call to find which is being used? I know how to find available disk space, but is there some way to find the total capacity of a drive?
Printable View
Program backs up its data to floppies, but some users want to use Zip disks. Does anyone know of an API call to find which is being used? I know how to find available disk space, but is there some way to find the total capacity of a drive?
I did something similar for finding Cdroms-look into this...
Declare statements...
private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (byval nBufferLength as Long, byval lpBuffer as string) as Long
private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (byval nDrive as string) as Long
Part of subroutine....
'initialize strDrives to 255 spaces
strDrives = Space(255)
'get drives, strDrives var will look like
' A:\<null>C:\<null>D:\<null>E:\<null><null>
'intNumberOfDrives is the new length of Drives
intNumberOfDrives = GetLogicalDriveStrings(len(strDrives), strDrives)
Y = 1
for X = 1 to intNumberOfDrives step 4
'get a drive root directory (like "C:\")
strDriveName = mid(strDrives, X, 3)
'if drive is a CD
If GetDriveType(strDriveName) = DRIVE_CDROM then
intNumberOfCDDrives = intNumberOfCDDrives + 1
strCDLetters = strCDLetters & Left(strDriveName, 1) & " "
strCDDriveArray(Y) = strDriveName
Y = Y + 1
End If
next X
Private Sub GetInfo()
Dim fs, d, s, t
Dim drvpath As String
On Error Resume Next
drvpath = Text1.Text
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath & ":\")))
Select Case d.DriveType
Case 0: t = "Unknow"
Case 1: t = "Removable"
Case 2: t = "Hard Disk"
Case 3: t = "Network"
Case 4: t = "CD-ROM"
Case 5: t = "RAM Disc"
End Select
If Err Then
lblDrive = "Unit " & Text1.Text & ": not found"
lblSN = ""
lblFree = ""
lblTot = ""
Exit Sub
Else
lblDrive = "Unit " & d.DriveLetter & ": - " & t
lblSN = "NS: " & d.SerialNumber
If Err Then
lblSN = "Unit not ready"
lblFree = ""
lblTot = ""
End If
If (d.AvailableSpace / 1024) >= 1024 Then
lblFree = "Free Space: " & FormatNumber(d.AvailableSpace / 1048576, 2) & " MB"
Else
lblFree = "Free Space: " & FormatNumber(d.AvailableSpace / 1024, 0) & " KB"
End If
If (d.TotalSize / 1024) >= 1024 Then
lblTot = "Total Size: " & FormatNumber(d.TotalSize / 1048576, 2) & " MB"
Else
lblTot = "Total Size: " & FormatNumber(d.TotalSize / 1024, 0) & " KB"
End If
End If
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If ((KeyAscii >= 65) And (KeyAscii <= 90)) Or ((KeyAscii >= 97) And (KeyAscii <= 122)) Then
Text1.Text = Chr(KeyAscii)
Text1.Text = UCase(Text1.Text)
GetInfo
End If
End Sub
Private Sub Form_Load()
GetInfo
KeyPreview = True
End Sub
Iouri Boutchkine
[email protected]