Как распознать, какой диск вставлен в сидюк?

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

Как распознать, какой диск вставлен в сидюк?

Сообщение dimix » 07.06.2005 (Вт) 15:16

Всем привет!

Подскажите, plz, как распознать, какой диск вставлен в сидюк? Интересует, является ли диск CDDA, является ли смешанным (Audio+данные). Остальные диски пусть будут "другое".

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 07.06.2005 (Вт) 15:52

- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

a_mayor
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 02.06.2005 (Чт) 21:44

Сообщение a_mayor » 07.06.2005 (Вт) 15:58

Есть такой пример в API Guide:

Код: Выделить всё

Option Explicit

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()
    Dim Serial As Long, VName As String, FSName As String
    Dim CDRomDrive As String
   
   
   
    CDRomDrive = InputBox("Drive to test:")
    If CDRomDrive = "" Then Exit Sub
    CDRomDrive = Left(CDRomDrive, 1) & ":\"
   
    'Create buffers
    VName = String$(255, Chr$(0))
    FSName = String$(255, Chr$(0))
   
    'Get the volume information
    GetVolumeInformation CDRomDrive, 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 " & CDRomDrive & " is '" + VName + "', the File system name is '" + FSName + "' and the serial number is '" + Trim(Str$(Serial)) + "'", vbInformation + vbOKOnly, App.Title
End Sub

dimix
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 174
Зарегистрирован: 08.02.2005 (Вт) 22:47

Сообщение dimix » 07.06.2005 (Вт) 18:42

Спасибо за пример!
Мне из него может помочь только VName, т.к. именно в нем я вижу "Audio CD". Но у меня возникает (точнее, уже возник) вопрос: а винда таким же образом определяет, CDDA в сидюке или нет? Т.е. насколько такой способ правильный?

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 24.04.2008 (Чт) 17:17

Подыму темку. Можно ли как-то простым способом определить что вставлен именно Audio CD? mciSendString вроде не может такого.
А верхний пример никуда не годен.

dimix
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 174
Зарегистрирован: 08.02.2005 (Вт) 22:47

Сообщение dimix » 15.05.2008 (Чт) 19:38

А почему, собственно говоря, не годен? Обсуждали давно (аж 3 года назад), но вроде бы у меня тогда все получилось... Или не все... :D


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 30

    TopList