Определение типа устройства по его букве

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Mongoose
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 29.03.2004 (Пн) 17:03
Откуда: Московский зоопарк

Определение типа устройства по его букве

Сообщение Mongoose » 31.12.2004 (Пт) 18:48

Подскажите, как определить тип устройства по его букве?
(HARD DRIVE/FLOPPY/CD/DVD/FLASH/...)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 31.12.2004 (Пт) 19:00

API-Guide писал(а):The GetDriveType function determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.


Код: Выделить всё
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'Set the graphic mode to persistent
    Me.AutoRedraw = True
    'Get information about the C:\
    Select Case GetDriveType("C:")
        Case 2
            Me.Print "Removable"
        Case 3
            Me.Print "Drive Fixed"
        Case Is = 4
            Me.Print "Remote"
        Case Is = 5
            Me.Print "Cd-Rom"
        Case Is = 6
            Me.Print "Ram disk"
        Case Else
            Me.Print "Unrecognized"
    End Select
End Sub


;)

Mongoose
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 29.03.2004 (Пн) 17:03
Откуда: Московский зоопарк

Сообщение Mongoose » 31.12.2004 (Пт) 19:10

Спасибо, а как получить идентификатор диска? Мне нужно определять какой диск вставлен в CD и показывать некую информацию, различную для каждого диска. Соответственно метка не подходит. А в API я иногда сильно торможу (как сейчас :))

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 31.12.2004 (Пт) 19:13

А через FSO пробовал :?: Свойства диска определяет прекрасно :wink:

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 31.12.2004 (Пт) 19:19

API-Guide писал(а):The GetVolumeInformation function returns information about a file system and volume whose root directory is specified.


Код: Выделить всё
Private Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim Serial As Long, VName As String, FSName As String
    'Create buffers
    VName = String$(255, Chr$(0))
    FSName = String$(255, Chr$(0))
    'Get the volume information
    GetVolumeInformation "C:", VName, 255, Serial, 0, 0, FSName, 255
    'Strip the extra chr$(0)'s
    VName = Left$(VName, InStr(1, VName, Chr$(0)) - 1)
    FSName = Left$(FSName, InStr(1, FSName, Chr$(0)) - 1)
    MsgBox "The Volume name of C:\ is '" + VName + "', the File system name of C:\ is '" + FSName + "' and the serial number of C:\ is '" + Trim(Str$(Serial)) + "'", vbInformation + vbOKOnly, App.Title
End Sub


:D

Mongoose
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 29.03.2004 (Пн) 17:03
Откуда: Московский зоопарк

Сообщение Mongoose » 31.12.2004 (Пт) 19:30

Я хочу использовать поменьше компонентов. Поэтому способ тов. Amed предпочтительнее. Всем спасибо, с Новым Годом!

Mongoose
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 29.03.2004 (Пн) 17:03
Откуда: Московский зоопарк

Сообщение Mongoose » 06.01.2005 (Чт) 19:36

Amed писал(а):
API-Guide писал(а):The GetVolumeInformation function returns information about a file system and volume whose root directory is specified.


Код: Выделить всё
Private Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim Serial As Long, VName As String, FSName As String
    'Create buffers
    VName = String$(255, Chr$(0))
    FSName = String$(255, Chr$(0))
    'Get the volume information
    GetVolumeInformation "C:", VName, 255, Serial, 0, 0, FSName, 255
    'Strip the extra chr$(0)'s
    VName = Left$(VName, InStr(1, VName, Chr$(0)) - 1)
    FSName = Left$(FSName, InStr(1, FSName, Chr$(0)) - 1)
    MsgBox "The Volume name of C:\ is '" + VName + "', the File system name of C:\ is '" + FSName + "' and the serial number of C:\ is '" + Trim(Str$(Serial)) + "'", vbInformation + vbOKOnly, App.Title
End Sub


:D


Два вопроса:

1) Является ли Serial уникальным для любого CD/DVD-+r/rw/rom?
2) Из-за чего может получаться такая странная вещь: serial и VName определяются для всех логических дисков кроме текущего (на котором находится проект)?

Очень надеюсь на вашу помощь.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: YaCy [Bot] и гости: 17

    TopList