Доброго времени суток!
Столкнулся с проблемой получения корректных данных по оптическим дискам посредством "GetDrive". А именно, при попытке получить данные по оптическим дискам неверно отображается свойство "TotalSize"
Код создаёт таблицу на листе со свойствами диска и, ниже, список файлов на нём и их свойства.

Однако, через стандартное окно свойств системы наблюдаем совсем другое:

Сам код выглядит следующим образом
переменная sFolder пути файла задаётся диалоговым окном
С некоторыми оптическими дисками информацию код выдаёт верно. Думал дело в UDF, но при анализе диска CD-R 0,7 Гб с UDF информация об объёмах показывается верная. То ли дело в сессиях записи/перезаписи, то ли ещё в чём-то... в общем пока не разобрался...
Подскажите, пожалуйста, в какую сторону здесь нужно "копать"?
Столкнулся с проблемой получения корректных данных по оптическим дискам посредством "GetDrive". А именно, при попытке получить данные по оптическим дискам неверно отображается свойство "TotalSize"
Код создаёт таблицу на листе со свойствами диска и, ниже, список файлов на нём и их свойства.
Однако, через стандартное окно свойств системы наблюдаем совсем другое:
Сам код выглядит следующим образом
| Код |
|---|
Sub getInfoDrive()
Dim fso As Object, t As String
Dim myDrive As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set myDrive = fso.GetDrive(fso.GetDriveName(sFolder)) 'sFolder Public variable
'Set myDrive = fso.GetDrive("P:") ' test string
Select Case myDrive.DriveType
Case 0: t = "Unknown"
Case 1: t = "Removable drive (USB/SDCard)"
Case 2: t = "Fixed"
Case 3: t = "Network"
Case 4: t = "CD-ROM"
Case 5: t = "RAM Disk"
End Select
Cells(2, 1) = t
Cells(2, 2) = myDrive.VolumeName
Cells(2, 3) = myDrive.FileSystem
Cells(2, 4) = myDrive.TotalSize ' &vbCrLf
'Cells(2, 4) = myDrive.FreeSpace
Cells(2, 5) = myDrive.TotalSize - myDrive.AvailableSpace
Application.Run "getInfoFolder"
End Sub
|
| Код |
|---|
Sub GetFolderDialog_Shell()
On Error Resume Next
Dim objShellApp As Object, objFolder As Object, ulFlags As Integer
Set objShellApp = CreateObject("Shell.Application")
ulFlags = 20
Set objFolder = objShellApp.BrowseForFolder(0, "Error", ulFlags, "*:\") '"
sFolder = objFolder.Self.Path 'folder path -> variable
If Err.Number <> 0 Then
MsgBox "File not found!", vbInformation, "File Information Program"
Else:
Application.Run "getInfoDrive"
Application.Run "GetSerialDisk"
End If
End Sub
|
С некоторыми оптическими дисками информацию код выдаёт верно. Думал дело в UDF, но при анализе диска CD-R 0,7 Гб с UDF информация об объёмах показывается верная. То ли дело в сессиях записи/перезаписи, то ли ещё в чём-то... в общем пока не разобрался...
Подскажите, пожалуйста, в какую сторону здесь нужно "копать"?