Oppure

Loading
29/12/09 14:40
swet
Salve a tutti, sto cercando di risalire al seriale del mio harddisk esterno tramite questa API che uso così:
Private Declare Function GetVolumeSerialNumber Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As Long, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, ByVal lpMaximumComponentLength As Long, ByVal lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As Long, ByVal nFileSystemNameSize As Long) As Long

Private Function VolumeSerial(DriveLetter) As Long
    Dim Serial As Long
    Call GetVolumeSerialNumber(UCase(DriveLetter) & ":\", 0&, 0&, Serial, 0&, 0&, 0&, 0&)
    VolumeSerial = Serial
End Function
MsgBox("Il seriale è:"& VolumeSerial("E")


Ma mi restituisce sempre 0 eppure la lettera del drive è esatta.

Potete aiutarmi?

Grazie

EDIT: Ho risolto così:
Dim disk As New ManagementObject("Win32_LogicalDisk.DeviceID=""E:""")
                Dim diskProperty As PropertyData = disk.Properties("VolumeSerialNumber")
                seriale = diskProperty.Value.ToString()

Ma perché se l' unità la metto in quel modo funziona e se invece faccio così
Dim disk As New ManagementObject("Win32_LogicalDisk.DeviceID="&Mid(s, 1, 2)&"")


non va più?Mi dice parametro non valido.

Ultima modifica effettuata da swet 29/12/09 16:46
aaa
31/12/09 9:39
Il Totem
Forse perchè non hai messo le virgolette...
aaa
01/01/10 15:06
swet
Ciao sto provando così:
Dim seriale As String
        Dim s As String = "D:"
        Dim disk As New ManagementObject("Win32_LogicalDisk.DeviceID=""s""")
        Dim diskProperty As PropertyData = disk.Properties("VolumeSerialNumber")
        seriale = diskProperty.Value.ToString()


Mi evidenzia la linea Dim DiskProperty e mi dice:"NON TROVATO", però l' hard disk c' è,quindi a cosa è dovuto questo errore?! Grazie
aaa
01/01/10 16:35
Alfonso
Probabilmente perchè racchiudi la s tra virgolette e non indica più la tua variabile ma il carattere s

MsgBox("Win32_LogicalDisk.DeviceID=" & s & "";)
aaa
02/01/10 10:04
Il Totem
Postato originariamente da Alfonso:

Probabilmente perchè racchiudi la s tra virgolette e non indica più la tua variabile ma il carattere s

MsgBox("Win32_LogicalDisk.DeviceID=" & s & "";)


Anche qui mancano le virgolette...
"Win32_LogicalDisk.DeviceID="""" & s & """""
aaa
02/01/10 10:51
Alfonso
Purtroppo non sono riuscito a capire come usare il ManagementObject, non ho scoperto quale Import usare, e mi sono affidato alla logica vb6 (ormai troppo radicata) usando MsgBox per evidenziare come inglobare la variabile nell'istruzione.
Comunque ditemi: cosa sottintendono tutte quelle virgolette?
aaa
04/01/10 10:29
Il Totem
Semplicemente delle virgolette. D'altra parte tu hai scritto:

EDIT: Ho risolto così:

Codice sorgente - presumibilmente Visual Basic
Dim disk As New ManagementObject("Win32_LogicalDisk.DeviceID=""E:""";)
Dim diskProperty As PropertyData = disk.Properties("VolumeSerialNumber";)
seriale = diskProperty.Value.ToString()

Ma perché se l' unità la metto in quel modo funziona e se invece faccio così

Codice sorgente - presumibilmente Php
Dim disk as new ManagementObject("Win32_LogicalDisk.DeviceID="&Mid(s, 1, 2)&"";)


non va più?Mi dice parametro non valido.


L'unica differenza tra il primo e il secondo codice è che nel primo ci sono le virgolette intorno al nome del volume (""E:"" > "E:";), mentre nel secondo no ("" indica una stringa vuota e non delle virgolette).
aaa