cs_Blanc
Messages postés181Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention16 octobre 2006
-
1 mars 2005 à 18:16
cs_RedDog
Messages postés50Date d'inscriptionlundi 7 avril 2003StatutMembreDernière intervention21 août 2013
-
2 mars 2005 à 15:32
Bon, voilà.. vu que ma première question n'a pas eu bcp de succès (même pas dutout..) je la repose, plus clairement..
J'aimerais savroi, si c'est possible d'obtenir le nom d'un disque locale (disque dur)...
cs_hassen
Messages postés338Date d'inscriptionmardi 28 janvier 2003StatutMembreDernière intervention 4 novembre 2008 1 mars 2005 à 18:29
bonjour,
voici le code qui te permet non seulement de connaitre le label de ton disque local mais aussi d'avoir son numero de serie
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
'Fin des Déclarations
Private Sub Command1_Click()
Dim r&, PathName$, DrvVolumeName$, DrvSerialNo$
MsgBox (" Lecteur " & ": " & UCase$(PathName$))
MsgBox (" Le Label du disk " & ": " & DrvVolumeName$)
MsgBox (" Le Numéro de série du disque " & ": " & DrvSerialNo$)
End Sub
Private Sub rgbGetVolumeInformationRDI(PathName$, DrvVolumeName$, DrvSerialNo$)
Dim r As Long
Dim pos As Integer
Dim HiWord As Long
Dim HiHexStr As String
Dim LoWord As Long
Dim LoHexStr As String
Dim VolumeSN As Long
Dim MaxFNLen As Long
Dim UnusedStr As String
Dim UnusedVal1 As Long
Dim UnusedVal2 As Long
pos% = InStr(DrvVolumeName$, Chr$(0))
If pos% Then DrvVolumeName$ = Left$(DrvVolumeName$, pos% - 1) If Len(Trim$(DrvVolumeName$)) 0 Then DrvVolumeName$ "(pas de label)"
'determine l'id du disque
HiWord& = GetHiWord(VolumeSN&) And &HFFFF&
LoWord& = GetLoWord(VolumeSN&) And &HFFFF&
DrvSerialNo$ = HiHexStr$ & "-" & LoHexStr$
End Sub
Function GetHiWord(dw As Long) As Integer
If dw& And &H80000000 Then
GetHiWord% = (dw& \ 65535) - 1
Else: GetHiWord% = dw& \ 65535
End If
End Function
Function GetLoWord(dw As Long) As Integer
If dw& And &H8000& Then
GetLoWord% = &H8000 Or (dw& And &H7FFF&)
Else: GetLoWord% = dw& And &HFFFF&
End If
End Function
cs_Blanc
Messages postés181Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention16 octobre 2006 1 mars 2005 à 20:01
Merci!! mais en faite, j'utilise Vb.Net, j'ai essayé de comprendre un peu le code (je l'ai un peut modifier pour qu'il passe) mais j'arrive pas à obtenir le label et l'id (mais l'id est moins important...)
Mais si tu pourrais m'expliquer comment chopper des valeurs dans une dll.. enfin, je crois que c'est ce que tu as fais..?! avec la dll kernel32.. et je voulais savoir comment ça marche... (je m'y connaît pas dutout..)
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 1 mars 2005 à 22:23
Salut,
Je n'ai pas testé en vb.net, mais il y a une autre solution que les API. Le FileSystemObject, bien que je n'aime pas l'utiliser mais bon, ça utilise le scripting runtime de vb6 mais il doit bien y avoir l'équivalent en vb.net et ça doit se situer vers une des classes de System.IO mais je n'ai pas vb.net sous la main ce soir.
Dim d As Object
Dim st As String
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
For Each d In fso.Drives
If d.DriveType <> 1 Then ' Si pas lecteur de disquette
If d.IsReady Then
st = "Lettre logique : " & d.Path & vbCrLf
st = st & "Nom de partage : " & d.ShareName & vbCrLf
st = st & "Nom de volume : " & d.VolumeName & vbCrLf
st = st & "Numéro de série : " & d.SerialNumber & vbCrLf
st = st & "Type de drive : "
Select Case d.DriveType Case Is 0: st st & "Iconnu" 'Case Is 1: st st & "Disquette" Case Is 2: st st & "Disque dur" Case Is 3: st st & "Réseau" Case Is 4: st st & "CD/DVD Rom" Case Is 5: st st & "Ram"
End Select
cs_RedDog
Messages postés50Date d'inscriptionlundi 7 avril 2003StatutMembreDernière intervention21 août 2013 1 mars 2005 à 23:33
Paramètres pour Drive:
TotalSize: Taille totale du lecteur en octets
AvailableSpace, FreeSpace: Espace disponible sur le lecteur en octets
DriveLetter: Lettre assignée au lecteur
DriveType: Type de lecteur (amovible, fixe, réseau, lecteur de CD-ROM ou disque virtuel)
SerialNumber: Numéro de série du lecteur
FileSystem: Type de système de fichiers utilisé par le lecteur (FAT, FAT32 ou NTFS)
IsReady: Indique si un lecteur est disponible
ShareName, VolumeName: Nom du partage et/ou du volume
Path, RootFolder: Chemin d'accès ou dossier racine du lecteur
cs_Blanc
Messages postés181Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention16 octobre 2006 2 mars 2005 à 15:12
Merci beaucoup!!!! pour le imports Scripting, ça marche pas chez moi.. je pense que c'est parce que j'ai vb.net avec le framework 1.0.. je sais pas.. peut-être..