Доброго времени суток!
Столкнулся с проблемой получения корректных данных по оптическим дискам посредством "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 информация об объёмах показывается верная. То ли дело в сессиях записи/перезаписи, то ли ещё в чём-то... в общем пока не разобрался...
Подскажите, пожалуйста, в какую сторону здесь нужно "копать"?