Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Жёсткий диск или CD-ROM: не могу разобраться Добавлено: 24.01.10 12:03  

Автор вопроса:  iprog | Web-сайт: usprogs.atheo-club.ru
Пишу программу на Visual Basic 6. Использую на форме DriveList, DirList и FileListBox. Сделал так, что когда пользователь выбирает какое-нибудь устройство (например, CD-ROM), то оно открывается. А когда пользователь выбирает жёсткий диск, то возникает ошибка. Подскажите пожалуйста, как различить, какое устройство выбирает пользователь: жёсткий диск или другое устройство?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 s12



Вопросов: 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-буква диска)
  ;Debug.Print thisdrive ' показываем имена дисков
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
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #2 Добавлено: 24.01.10 20:22
s12а vb 6.0 по твоему не прошлый век?Даже физически он выпущщен помоему в 95 году.

Ответить

Номер ответа: 3
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #3 Добавлено: 24.01.10 21:11
Нууу... это последний не .NET язык, достаточно популярный и простой как в изучении так и в применении, так сказать. Я бы назвал его еще живой легендой!
Хотя сам я уже перешел на C#. ;)

Ответить

Номер ответа: 4
Автор ответа:
 iprog



Вопросов: 26
Ответов: 110
 Web-сайт: usprogs.atheo-club.ru
 Профиль | | #4
Добавлено: 24.01.10 21:43
Огромное спасибо! Вы мне очень помогли!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам