Newsgroup: it.comp.lang.visual-basic
Titolo: ID univoco di un CD

Mi chiedevo se un CD abbia un "meccanismo" di identificazione univoca.
Posso cioè sapere di un CD se è proprio quello che avevo per esempio
indicizzato tempo prima ?
Per i CD audio questo esiste, per il fatto che salvando i nomi delle tracce
queste vengono di nuovo applicate ogni volta che reinserisco il CD.
Come fare dunque per acquisire questo tipo di informazione da un CD con VB ?
Grazie

 ha scritto nel messaggio
news:ijix8.80666$SR5.2...@twister1.libero.it...

Il numero di serie:
Function ShowDriveSerial(drvpath) As String
   Dim fs, d, s, t
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
   ShowDriveSerial = Hex(d.SerialNumber)
End Function
Ciao!
--
Esteban
Hosted by 
www.seber.it
(Remove nonspammare for reply)

 ShowDriveSerial = Hex(d.SerialNumber) End Function
Oh, una di quelle belle funzioni "I like Variant"... mi mancava proprio!
<g>
--
Faber

 Oh, una di quelle belle funzioni "I like Variant"... mi mancava proprio!
Ti riporto il codice completo da cui ho estratto, senza correggere, ciò che
serviva per ricavare il numero di serie del disco. Questo codice l'ho copiato
tale e quale da MSDN (Proprietà SerialNumber):
Sub ShowDriveInfo(drvpath)
    Dim fs, d, s, t
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
    Select Case d.DriveType
        Case 0: t = "Sconosciuta"
        Case 1: t = "Rimovibile"
        Case 2: t = "Fissa"
        Case 3: t = "Rete"
        Case 4: t = "CD-ROM"
        Case 5: t = "Disco RAM"
    End Select
    s = "Unità " & d.DriveLetter & ": - " & t
    s = s & vbCrLf & "NS: " & d.SerialNumber
    MsgBox s
End Sub


 codice l'ho copiato tale e quale da MSDN (Proprietà SerialNumber):
[cut]
come pensavo, spesso e volentieri gli esempi di MSDN sono fatti con
quello dove non batte il sole...  <eg>
--
Faber

tale e quale da MSDN (Proprietą SerialNumber):
Si', ma hai visto il titolo della pagina?
Location: Windows Script Technologies
Scripting Runtime Library   
Working with Drives and Folders
oppure
Location: Windows Script Technologies
Scripting Runtime Library   
SerialNumber Property
_Non_ e' visual basic :-(
-- 
ciao, hal

 Scripting Runtime Library
Ok, ritiro quello che ho detto...  :)
--
Faber

 SerialNumber Property
Mi dispiace, ma io non ho riportate queste info (MSDN su CD).
In ogni caso, non approvo neppure io le funzioni 'I Like Variant', come non
approvo chi è sempre pronto a criticare anziché aiutare e/o correggere.
Faber poteva benissimo riscrivere la dichiarazione delle variabili in modo
corretto, così magari anche il nostro amico Nyps aveva le idee più chiare, visto
che ha chiesto un aiuto ed ora gli tocca leggere un thread di sapientoni che
discutono su chi saprebbe scrivere il codice in modo più pulito.
Ok, mi sono sfogato, ora chiedo scusa a Faber e a Hal1961, ma da un po' di tempo
che leggo post di persone che sono sempre pronte a criticare i post degli altri,
non ricordandosi che in questo ng non si parla di Bon Ton ma di Visual Basic.
;-)


;-)
Il mio intervento voleva essere uno sfotto' amichevole, cosi' come si fa anche
tra colleghi :-)
Da'i, che il tuo nick e' uno di quelli che leggo piu' volentieri :-)
-- 
ciao, hal

 Public Function ShowDriveSerial(ByVal strDrvPath As String) As String
dovrebbe essere As Long anche qui ...
--
Faber

 scrivere il codice in modo più pulito.
Ok, era il tempo che mancava...
Se può servire, eccola qua:
Public Function ShowDriveSerial(ByVal strDrvPath As String) As String
    On Error GoTo Errore
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ShowDriveSerial = _
        FSO.GetDrive( _
            FSO.GetDriveName( _
                FSO.GetAbsolutePathName(strDrvPath) _
            ) _
        ).SerialNumber
Errore:
    Set FSO = Nothing
End Function
Oppure (così ho anche imparato qualcosa  :))
' Necessita della dichiarazione di GetVolumeInformation()
' strDrive deve terminare con \
Public Function GetVolumeSN(ByVal strDrive As String) As Long
    Call GetVolumeInformation( _
        strDrive, _
        vbNullString, _
        0, _
        GetVolumeSN, _
        ByVal 0, _
        ByVal 0, _
        vbNullString, _
        0)
End Function
--
Faber