Newsgroup: it.comp.lang.visual-basic
Titolo: C'è il CD?

C'è qualcuno che può dirmi come posso verificare il fatto che in un lettore
CD ci sia un CD leggibile?
vi ringrazio anticipatamente!!!!

...


  Open Drive + ":\testcd" For Output As #1
                                                    ^^^^^^
Ovviamente volevi dire For Input, trattandosi di un CD Rom...
Oltretutto č meglio non usare un numero di file fisso, ma richiederlo al
sistema operativo:
lNumFile=FreeFile
Open Drive + ":\testcd" For Input As #lNumFile
Ciao
*Roby*

Ti mando pari pari una funzione (incompleta e non debuggata) che sto
sviluppando proprio per ricercare la presenza di una unita' CD-ROM sul
sistema (parto dal presupposto che possa avere, ad esempio, un lettore
CD ed un masterizzatore). Non solo: all'interno del lettore deve
essere verificata anche la presenza di un CD con una data etichetta.
Se una di queste condizioni non e' verificata, la routine cicla fino a
quando l'utente non decide di sospendere la ricerca. Nella struttura
INFOSTRUCT passata alla funzione, iDriveType deve essere uguale a 4.
Inoltre, il progetto deve includere Microsoft Scripting Runtime (Menu
Project - References). Spero possa darti degli spunti utili.
Bye
Fauretto
Private Type INFOSTRUCT
    iDriveType As Integer
    strPathDrive As String
    strShareName As String
    strVolumeName As String
End Type
Private myStruct As INFOSTRUCT
Dim fso As FileSystemObject
Dim mfldr As Folder
Dim drv As Drive
Dim drvs As Drives
Private Function SearchBackupUnit(myStruct As INFOSTRUCT) As Integer
Dim nAns, result As Integer
    result = -1
    Set fso = New FileSystemObject
    Select Case myStruct.iDriveType
    Case 4:
        Set drvs = fso.Drives
search_CD:
        For Each drv In drvs
            If drv.DriveType = 4 Then
                'MsgBox "CD ROM found!", vbInformation + vbOKOnly,
"Search"
                If drv.IsReady Then
                    If drv.VolumeName = myStruct.strVolumeName Then
                        result = 0
                        myStruct.strPathDrive = drv.Path
                    Else
                        nAns = MsgBox("Please insert CD labeled " &
myStruct.strVolumeName, vbCritical + vbOKCancel, "CD not valid")
                        If nAns = vbCancel Then
                            GoTo exit_search
                        Else
                            GoTo search_CD
                        End If
                    End If
                    'MsgBox "CD ROM Ready!", vbInformation + vbOKOnly,
"Verifying"
                Else
                    nAns = MsgBox("CD ROM Not Ready! Please insert CD
labeled " &                 myStruct.strVolumeName, vbInformation +
vbOKCancel, "Verifying")
                    If nAns = vbCancel Then
                        GoTo exit_search
                    Else
                        GoTo search_CD
                    End If
                End If
            End If
        Next
    Case 2:
    Case Else
    End Select
exit_search:
Set fso = Nothing
SearchBackupUnit = result
End Function

...


Se mescoli la funzione che ti ha suggerito Andrea con qualche semplice API,
potresti ottenere di più.
trovi un esempio
su 
http://members.xoom.it/CesareRizzi
L'esempio IsThereCD verifica innanzitutto l'esistenza
del drive del CD, e con quale lettera è stato installato, ed una
volta individuato, verifica la presenza del CD-ROM
--
Posted from 
romeo.logikos.it
 [193.70.26.1]
via Mailgate.ORG Server - 
http://www.mailgate.org

 (io ho provato e funziona)?
Buffo! Io pensavo che VB verificasse quando apri un file For Output se aveva
i privilegi di scrittura. Invece parrebbe di no.
Comunque se hai dentro il Cd sbagliato e il file non esiste, VB cerca di
crearlo e a quel punto ti dovrebbe dare un errore diverso da 71 (a dire il
vero non ho controllato, ma mi pare abbastanza ovvio).
Ciao
*Roby*


wrote/scrisse:

75, ma la function funziona ugualmente in quanto mette a false il flag solo
con 71
--
Ciao,
      Peppo
 
ICQ    : UIN 5709387
Fidonet: 2:331/301.45

volta individuato, verifica la presenza del CD-ROM
:-) sono appunto passati sul NG tutti gli elementi per fa cio` ed e`
infatti cio` che ho realizzato anch'io. Appena posso provo a vedere come
l'hai fatta tu per un sempre utile confronto.
