Страница: 1 |
Вопрос: Жёсткий диск или CD-ROM: не могу разобраться | Добавлено: 24.01.10 12:03 |
Автор вопроса: ![]() |
Пишу программу на Visual Basic 6. Использую на форме DriveList, DirList и FileListBox. Сделал так, что когда пользователь выбирает какое-нибудь устройство (например, CD-ROM), то оно открывается. А когда пользователь выбирает жёсткий диск, то возникает ошибка. Подскажите пожалуйста, как различить, какое устройство выбирает пользователь: жёсткий диск или другое устройство? |
Ответы | Всего ответов: 4 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 363 |
Профиль | Цитата | #1 | Добавлено: 24.01.10 19:08 |
Использую на форме DriveList, DirList и FileListBox
Прошлый век! Выкидываем и юзаем две апишки: GetLogicalDriveStrings и GetDriveType описание ниже. Declare Function GetLogicalDriveStrings Lib "kernel32.dll" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Платформа: Win 95/98, Win NT GetLogicalDriveStrings определяет имеющие силу логические диски на компьютере и размещает их названия корневых каталогов в строку lpBuffer. Каждое имя корневого каталога в буфере отделено нулевым символом, и полными строковыми концами в двух нулевых символах. Например, если существуют только A: и C: , строка будет " a: \ (пустой указатель) c: \ (пустой указатель) (пустой указатель) ", где (пустой указатель) представляет нулевой символ. Функция возвращает 0, если произошла ошибка, или длина строки, помещенной в lpBuffer, если функция выполнена успешно. nBufferLength Длина строки в буфере lpBuffer. lpBufferСтрока,которая получает имена всех логических дисков. Пример: ' Перечисляем имена всех корневых каталогов. Так как каждый вход в строке берет ' Четыре символа (три для имени и один для пустого указателя), мы можем рассчитать длину ' строки. Это освобождает нас от проблем относительно пустых указателей. Dim drivenames As String ' получаем имена дисков Dim thisdrive As String ' буфер для имени диска Dim c As Long ' счетчик Dim slength As Long ' длина возвращаемой строки ' Создаем место в буфере для имен дисков. drivenames = Space(255) ' должно хватить ' Получаем имена всех дисков. slength = GetLogicalDriveStrings(255, drivenames) ' считаем по 4 символа для извлечения имен каждого диска. For c = 1 To slength Step 4 ' thisdrive = Mid(drivenames, c, 3) ' извлекаем 3-х символьную строку X:\ (где X-буква диска) ![]() Next c ========= Declare Function GetDriveType Lib "kernel32.dll" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Платформа: Win 95/98, Win NT GetDriveType определяет типы дисков на компьютере.Это могут быть жесткие диски,флоппи-диски, CD-ROM и др. Функция возвращает тип диска.Если 0-значит ошибка,если 1-значит диск не существует,другие возвращаемые значения означают следующее: DRIVE_CDROM = 5 CD-ROM. DRIVE_FIXED = 3 Жесткий диск. DRIVE_RAMDISK = 6 RAM-диск. DRIVE_REMOTE = 4 Сетевой диск. DRIVE_REMOVABLE = 2 Сменный диск(напр.дискетта или любой сменный диск). nDrive Корневой каталог диска,как "c:\" или "a:\" Пример ' Определяем тип диска D: Dim drivetype As Long drivetype = GetDriveType("d:\" ![]() If drivetype = 1 Then Debug.Print "Диск D:\ не существует." If drivetype = DRIVE_REMOVABLE Then Print "Диск D:\ сменный диск." If drivetype = DRIVE_FIXED Then Print "Диск D:\ жесткий диск." If drivetype = DRIVE_CDROM Then Print "Диск D:\ CD-ROM." ' и т.д. Пользуйся ![]() |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 80 Ответов: 476 |
Профиль | Цитата | #2 | Добавлено: 24.01.10 20:22 |
s12а vb 6.0 по твоему не прошлый век?Даже физически он выпущщен помоему в 95 году. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 363 |
Профиль | Цитата | #3 | Добавлено: 24.01.10 21:11 |
Нууу... это последний не .NET язык, достаточно популярный и простой как в изучении так и в применении, так сказать. Я бы назвал его еще живой легендой!
Хотя сам я уже перешел на C#. ![]() |
Номер ответа: 4 Автор ответа: ![]() ![]() Вопросов: 26 Ответов: 110 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 24.01.10 21:43 |
Огромное спасибо! Вы мне очень помогли! |
Страница: 1 |
|