-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à un
-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à un
-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à un
Tu as sans doute raison, mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Si quelq'un peut m'aider, merci d'avance ...
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Const CDRom = 5
Private Const Fixed = 3
Private Const RamDisk = 6
Private Const Remote = 4
Private Const Removable = 2
Private Sub Command1_Click()
typeL = GetDriveType("C:")
Dim s As String
Select Case typeL
Case Removable: s = "Amovible"
Case Fixed: s = "Fixe"
Case Remote: s = "Réseau"
Case CDRom: s = "CD-ROM"
Case RamDisk: s = "Disque RAM"
Case Else: s = "Inconnu"
End Select
MsgBox (s)
End Sub
///////////////////////////////////////////////////////-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à un
objet COM...
Tu as sans doute raison, mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Si quelq'un peut m'aider, merci d'avance ...
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Const CDRom = 5
Private Const Fixed = 3
Private Const RamDisk = 6
Private Const Remote = 4
Private Const Removable = 2
Private Sub Command1_Click()
typeL = GetDriveType("C:")
Dim s As String
Select Case typeL
Case Removable: s = "Amovible"
Case Fixed: s = "Fixe"
Case Remote: s = "Réseau"
Case CDRom: s = "CD-ROM"
Case RamDisk: s = "Disque RAM"
Case Else: s = "Inconnu"
End Select
MsgBox (s)
End Sub
///////////////////////////////////////////////////////
-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à un
objet COM...
Tu as sans doute raison, mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Si quelq'un peut m'aider, merci d'avance ...
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Const CDRom = 5
Private Const Fixed = 3
Private Const RamDisk = 6
Private Const Remote = 4
Private Const Removable = 2
Private Sub Command1_Click()
typeL = GetDriveType("C:")
Dim s As String
Select Case typeL
Case Removable: s = "Amovible"
Case Fixed: s = "Fixe"
Case Remote: s = "Réseau"
Case CDRom: s = "CD-ROM"
Case RamDisk: s = "Disque RAM"
Case Else: s = "Inconnu"
End Select
MsgBox (s)
End Sub
///////////////////////////////////////////////////////-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à un
objet COM...
-----Message d'origine-----
Laurent B a écrit :Tu as sans doute raison, mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Si quelq'un peut m'aider, merci d'avance ...
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Const CDRom = 5
Private Const Fixed = 3
Private Const RamDisk = 6
Private Const Remote = 4
Private Const Removable = 2
Private Sub Command1_Click()
typeL = GetDriveType("C:")
Dim s As String
Select Case typeL
Case Removable: s = "Amovible"
Case Fixed: s = "Fixe"
Case Remote: s = "Réseau"
Case CDRom: s = "CD-ROM"
Case RamDisk: s = "Disque RAM"
Case Else: s = "Inconnu"
End Select
MsgBox (s)
End Sub
///////////////////////////////////////////////////////-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à
objet COM...
une classe que j'avais ecrite :
Public Enum TypeLecteur
Inconnu = 0
CheminInvalide = 1
Amovible = 2
DisqueInterne = 3
DisqueReseau = 4
CDRom = 5
RAMDisk = 6
End Enum
Public Class InformationVolume
Dim _volume As String
#Region " Déclarations fonctions kernel32"
Private Declare Auto Function GetDriveType
(ByVal lpRootPathName As String) As TypeLecteur
Private Declare Auto Sub GetVolumeInformation
"kernel32.dll" ( _
ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As StringBuilder, _
ByRef nVolumeNameSize As Integer, _
ByRef lpVolumeSerialNumber As Integer, _
ByRef lpMaximumComponentLength As Integer, _
ByRef lpFileSystemFlags As Integer, _
ByVal lpFileSystemNameBuffer As
ByRef nFileSystemNameSize As Integer)
Private Declare Auto Sub GetDiskFreeSpaceEx
ByVal lpDirectoryName As String, _
ByRef lpFreeBytesAvailable As Int64, _
ByRef lpTotalNumberOfBytes As Int64, _
ByRef lpTotalNumberOfFreeBytes As Int64)
#End Region
#Region " Structures Privées"
Private Structure Taille
Dim LibreDisponible As Int64
Dim Total As Int64
Dim TotalLibre As Int64
End Structure
Private Structure InformationVolume
Dim NomVolume As String
Dim NumeroSerie As Integer
Dim SystemeFichier As String
End Structure
#End Region
Public Sub New(ByVal Volume As String)
_volume = Volume
End Sub
#Region " Fonctions privées"
Private Function dotnet_GetDriveType() As
Return GetDriveType(_volume)
End Function
Private Function dotnet_GetVolumeInformation()
Dim VolumeNameBuffer As New StringBuilder
Dim VolumeSerialNumber As Integer
Dim MaximumComponentLength As Integer
Dim FileSystemFlags As Integer
Dim FileSystemNameBuffer As New
GetVolumeInformation(_volume,
VolumeNameBuffer.Capacity, VolumeSerialNumber, _
MaximumComponentLength,
FileSystemNameBuffer, FileSystemNameBuffer.Capacity)
With dotnet_GetVolumeInformation
.SystemeFichier =
.NomVolume = VolumeNameBuffer.ToString
.NumeroSerie = VolumeSerialNumber
End With
End Function
Private Function dotnet_GetDiskFreeSpaceEx() As
Dim _information As Taille
GetDiskFreeSpaceEx(_volume,
_information.Total, _information.TotalLibre)
Return _information
End Function
#End Region
#Region " Propriétes publiques"
ReadOnly Property Volume() As String
Get
Return _volume
End Get
End Property
ReadOnly Property Type() As TypeLecteur
Get
Return dotnet_GetDriveType()
End Get
End Property
ReadOnly Property EspaceLibreDisponible() As
Get
Return
End Get
End Property
ReadOnly Property NomVolume() As String
Get
Return
End Get
End Property
ReadOnly Property TailleMax() As Int64
Get
Return dotnet_GetDiskFreeSpaceEx.Total
End Get
End Property
#End Region
End Class
--
http://perso.wanadoo.fr/letchideslandes
.
-----Message d'origine-----
Laurent B a écrit :
Tu as sans doute raison, mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Si quelq'un peut m'aider, merci d'avance ...
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Const CDRom = 5
Private Const Fixed = 3
Private Const RamDisk = 6
Private Const Remote = 4
Private Const Removable = 2
Private Sub Command1_Click()
typeL = GetDriveType("C:")
Dim s As String
Select Case typeL
Case Removable: s = "Amovible"
Case Fixed: s = "Fixe"
Case Remote: s = "Réseau"
Case CDRom: s = "CD-ROM"
Case RamDisk: s = "Disque RAM"
Case Else: s = "Inconnu"
End Select
MsgBox (s)
End Sub
///////////////////////////////////////////////////////
-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à
objet COM...
une classe que j'avais ecrite :
Public Enum TypeLecteur
Inconnu = 0
CheminInvalide = 1
Amovible = 2
DisqueInterne = 3
DisqueReseau = 4
CDRom = 5
RAMDisk = 6
End Enum
Public Class InformationVolume
Dim _volume As String
#Region " Déclarations fonctions kernel32"
Private Declare Auto Function GetDriveType
(ByVal lpRootPathName As String) As TypeLecteur
Private Declare Auto Sub GetVolumeInformation
"kernel32.dll" ( _
ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As StringBuilder, _
ByRef nVolumeNameSize As Integer, _
ByRef lpVolumeSerialNumber As Integer, _
ByRef lpMaximumComponentLength As Integer, _
ByRef lpFileSystemFlags As Integer, _
ByVal lpFileSystemNameBuffer As
ByRef nFileSystemNameSize As Integer)
Private Declare Auto Sub GetDiskFreeSpaceEx
ByVal lpDirectoryName As String, _
ByRef lpFreeBytesAvailable As Int64, _
ByRef lpTotalNumberOfBytes As Int64, _
ByRef lpTotalNumberOfFreeBytes As Int64)
#End Region
#Region " Structures Privées"
Private Structure Taille
Dim LibreDisponible As Int64
Dim Total As Int64
Dim TotalLibre As Int64
End Structure
Private Structure InformationVolume
Dim NomVolume As String
Dim NumeroSerie As Integer
Dim SystemeFichier As String
End Structure
#End Region
Public Sub New(ByVal Volume As String)
_volume = Volume
End Sub
#Region " Fonctions privées"
Private Function dotnet_GetDriveType() As
Return GetDriveType(_volume)
End Function
Private Function dotnet_GetVolumeInformation()
Dim VolumeNameBuffer As New StringBuilder
Dim VolumeSerialNumber As Integer
Dim MaximumComponentLength As Integer
Dim FileSystemFlags As Integer
Dim FileSystemNameBuffer As New
GetVolumeInformation(_volume,
VolumeNameBuffer.Capacity, VolumeSerialNumber, _
MaximumComponentLength,
FileSystemNameBuffer, FileSystemNameBuffer.Capacity)
With dotnet_GetVolumeInformation
.SystemeFichier =
.NomVolume = VolumeNameBuffer.ToString
.NumeroSerie = VolumeSerialNumber
End With
End Function
Private Function dotnet_GetDiskFreeSpaceEx() As
Dim _information As Taille
GetDiskFreeSpaceEx(_volume,
_information.Total, _information.TotalLibre)
Return _information
End Function
#End Region
#Region " Propriétes publiques"
ReadOnly Property Volume() As String
Get
Return _volume
End Get
End Property
ReadOnly Property Type() As TypeLecteur
Get
Return dotnet_GetDriveType()
End Get
End Property
ReadOnly Property EspaceLibreDisponible() As
Get
Return
End Get
End Property
ReadOnly Property NomVolume() As String
Get
Return
End Get
End Property
ReadOnly Property TailleMax() As Int64
Get
Return dotnet_GetDiskFreeSpaceEx.Total
End Get
End Property
#End Region
End Class
--
http://perso.wanadoo.fr/letchideslandes
.
-----Message d'origine-----
Laurent B a écrit :Tu as sans doute raison, mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Si quelq'un peut m'aider, merci d'avance ...
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Const CDRom = 5
Private Const Fixed = 3
Private Const RamDisk = 6
Private Const Remote = 4
Private Const Removable = 2
Private Sub Command1_Click()
typeL = GetDriveType("C:")
Dim s As String
Select Case typeL
Case Removable: s = "Amovible"
Case Fixed: s = "Fixe"
Case Remote: s = "Réseau"
Case CDRom: s = "CD-ROM"
Case RamDisk: s = "Disque RAM"
Case Else: s = "Inconnu"
End Select
MsgBox (s)
End Sub
///////////////////////////////////////////////////////-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à
objet COM...
une classe que j'avais ecrite :
Public Enum TypeLecteur
Inconnu = 0
CheminInvalide = 1
Amovible = 2
DisqueInterne = 3
DisqueReseau = 4
CDRom = 5
RAMDisk = 6
End Enum
Public Class InformationVolume
Dim _volume As String
#Region " Déclarations fonctions kernel32"
Private Declare Auto Function GetDriveType
(ByVal lpRootPathName As String) As TypeLecteur
Private Declare Auto Sub GetVolumeInformation
"kernel32.dll" ( _
ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As StringBuilder, _
ByRef nVolumeNameSize As Integer, _
ByRef lpVolumeSerialNumber As Integer, _
ByRef lpMaximumComponentLength As Integer, _
ByRef lpFileSystemFlags As Integer, _
ByVal lpFileSystemNameBuffer As
ByRef nFileSystemNameSize As Integer)
Private Declare Auto Sub GetDiskFreeSpaceEx
ByVal lpDirectoryName As String, _
ByRef lpFreeBytesAvailable As Int64, _
ByRef lpTotalNumberOfBytes As Int64, _
ByRef lpTotalNumberOfFreeBytes As Int64)
#End Region
#Region " Structures Privées"
Private Structure Taille
Dim LibreDisponible As Int64
Dim Total As Int64
Dim TotalLibre As Int64
End Structure
Private Structure InformationVolume
Dim NomVolume As String
Dim NumeroSerie As Integer
Dim SystemeFichier As String
End Structure
#End Region
Public Sub New(ByVal Volume As String)
_volume = Volume
End Sub
#Region " Fonctions privées"
Private Function dotnet_GetDriveType() As
Return GetDriveType(_volume)
End Function
Private Function dotnet_GetVolumeInformation()
Dim VolumeNameBuffer As New StringBuilder
Dim VolumeSerialNumber As Integer
Dim MaximumComponentLength As Integer
Dim FileSystemFlags As Integer
Dim FileSystemNameBuffer As New
GetVolumeInformation(_volume,
VolumeNameBuffer.Capacity, VolumeSerialNumber, _
MaximumComponentLength,
FileSystemNameBuffer, FileSystemNameBuffer.Capacity)
With dotnet_GetVolumeInformation
.SystemeFichier =
.NomVolume = VolumeNameBuffer.ToString
.NumeroSerie = VolumeSerialNumber
End With
End Function
Private Function dotnet_GetDiskFreeSpaceEx() As
Dim _information As Taille
GetDiskFreeSpaceEx(_volume,
_information.Total, _information.TotalLibre)
Return _information
End Function
#End Region
#Region " Propriétes publiques"
ReadOnly Property Volume() As String
Get
Return _volume
End Get
End Property
ReadOnly Property Type() As TypeLecteur
Get
Return dotnet_GetDriveType()
End Get
End Property
ReadOnly Property EspaceLibreDisponible() As
Get
Return
End Get
End Property
ReadOnly Property NomVolume() As String
Get
Return
End Get
End Property
ReadOnly Property TailleMax() As Int64
Get
Return dotnet_GetDiskFreeSpaceEx.Total
End Get
End Property
#End Region
End Class
--
http://perso.wanadoo.fr/letchideslandes
.
Ok et merci "Letchideslandes"
Une fois simplifié et juste pour l'utilisation dont j'ai
besoin, c'est à dire récuperer le type du lecteur, ça
donne ça :
Public Enum TypeLecteur
Inconnu = 0
CheminInvalide = 1
Amovible = 2
DisqueInterne = 3
DisqueReseau = 4
CDRom = 5
RAMDisk = 6
End Enum
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As
TypeLecteur
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
Dim TypeL = GetDriveType("H:")
Dim s As String
Select Case TypeL
Case 1 : s = "Non-dispo"
Case 2 : s = "Amovible"
Case 3 : s = "Disque dur"
Case 4 : s = "Réseau"
Case 5 : s = "CDRom"
Case 6 : s = "Ram"
Case Else : s = "Inconnu"
End Select
MsgBox(s)
End Sub
Laurent
/////////////////////////////////////////////////////////-----Message d'origine-----
Laurent B a écrit :Tu as sans doute raison, mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Si quelq'un peut m'aider, merci d'avance ...
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Const CDRom = 5
Private Const Fixed = 3
Private Const RamDisk = 6
Private Const Remote = 4
Private Const Removable = 2
Private Sub Command1_Click()
typeL = GetDriveType("C:")
Dim s As String
Select Case typeL
Case Removable: s = "Amovible"
Case Fixed: s = "Fixe"
Case Remote: s = "Réseau"
Case CDRom: s = "CD-ROM"
Case RamDisk: s = "Disque RAM"
Case Else: s = "Inconnu"
End Select
MsgBox (s)
End Sub
///////////////////////////////////////////////////////-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à
unobjet COM...
une classe que j'avais ecrite :
Public Enum TypeLecteur
Inconnu = 0
CheminInvalide = 1
Amovible = 2
DisqueInterne = 3
DisqueReseau = 4
CDRom = 5
RAMDisk = 6
End Enum
Public Class InformationVolume
Dim _volume As String
#Region " Déclarations fonctions kernel32"
Private Declare Auto Function GetDriveType
Lib "kernel32.dll"(ByVal lpRootPathName As String) As TypeLecteur
Private Declare Auto Sub GetVolumeInformation
Lib"kernel32.dll" ( _
ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As StringBuilder, _
ByRef nVolumeNameSize As Integer, _
ByRef lpVolumeSerialNumber As Integer, _
ByRef lpMaximumComponentLength As Integer, _
ByRef lpFileSystemFlags As Integer, _
ByVal lpFileSystemNameBuffer As
StringBuilder, _ByRef nFileSystemNameSize As Integer)
Private Declare Auto Sub GetDiskFreeSpaceEx
Lib "kernel32.dll" ( _ByVal lpDirectoryName As String, _
ByRef lpFreeBytesAvailable As Int64, _
ByRef lpTotalNumberOfBytes As Int64, _
ByRef lpTotalNumberOfFreeBytes As Int64)
#End Region
#Region " Structures Privées"
Private Structure Taille
Dim LibreDisponible As Int64
Dim Total As Int64
Dim TotalLibre As Int64
End Structure
Private Structure InformationVolume
Dim NomVolume As String
Dim NumeroSerie As Integer
Dim SystemeFichier As String
End Structure
#End Region
Public Sub New(ByVal Volume As String)
_volume = Volume
End Sub
#Region " Fonctions privées"
Private Function dotnet_GetDriveType() As
TypeLecteurReturn GetDriveType(_volume)
End Function
Private Function dotnet_GetVolumeInformation()
As InformationVolumeDim VolumeNameBuffer As New StringBuilder
(255)Dim VolumeSerialNumber As Integer
Dim MaximumComponentLength As Integer
Dim FileSystemFlags As Integer
Dim FileSystemNameBuffer As New
StringBuilder(255)
GetVolumeInformation(_volume,
VolumeNameBuffer,VolumeNameBuffer.Capacity, VolumeSerialNumber, _
MaximumComponentLength,
FileSystemFlags,FileSystemNameBuffer, FileSystemNameBuffer.Capacity)
With dotnet_GetVolumeInformation
.SystemeFichier =
FileSystemNameBuffer.ToString.NomVolume = VolumeNameBuffer.ToString
.NumeroSerie = VolumeSerialNumber
End With
End Function
Private Function dotnet_GetDiskFreeSpaceEx() As
TailleDim _information As Taille
GetDiskFreeSpaceEx(_volume,
_information.LibreDisponible,_information.Total, _information.TotalLibre)
Return _information
End Function
#End Region
#Region " Propriétes publiques"
ReadOnly Property Volume() As String
Get
Return _volume
End Get
End Property
ReadOnly Property Type() As TypeLecteur
Get
Return dotnet_GetDriveType()
End Get
End Property
ReadOnly Property EspaceLibreDisponible() As
Int64Get
Return
dotnet_GetDiskFreeSpaceEx.LibreDisponibleEnd Get
End Property
ReadOnly Property NomVolume() As String
Get
Return
dotnet_GetVolumeInformation.NomVolumeEnd Get
End Property
ReadOnly Property TailleMax() As Int64
Get
Return dotnet_GetDiskFreeSpaceEx.Total
End Get
End Property
#End Region
End Class
--
http://perso.wanadoo.fr/letchideslandes
.
Ok et merci "Letchideslandes"
Une fois simplifié et juste pour l'utilisation dont j'ai
besoin, c'est à dire récuperer le type du lecteur, ça
donne ça :
Public Enum TypeLecteur
Inconnu = 0
CheminInvalide = 1
Amovible = 2
DisqueInterne = 3
DisqueReseau = 4
CDRom = 5
RAMDisk = 6
End Enum
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As
TypeLecteur
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
Dim TypeL = GetDriveType("H:")
Dim s As String
Select Case TypeL
Case 1 : s = "Non-dispo"
Case 2 : s = "Amovible"
Case 3 : s = "Disque dur"
Case 4 : s = "Réseau"
Case 5 : s = "CDRom"
Case 6 : s = "Ram"
Case Else : s = "Inconnu"
End Select
MsgBox(s)
End Sub
Laurent
/////////////////////////////////////////////////////////
-----Message d'origine-----
Laurent B a écrit :
Tu as sans doute raison, mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Si quelq'un peut m'aider, merci d'avance ...
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Const CDRom = 5
Private Const Fixed = 3
Private Const RamDisk = 6
Private Const Remote = 4
Private Const Removable = 2
Private Sub Command1_Click()
typeL = GetDriveType("C:")
Dim s As String
Select Case typeL
Case Removable: s = "Amovible"
Case Fixed: s = "Fixe"
Case Remote: s = "Réseau"
Case CDRom: s = "CD-ROM"
Case RamDisk: s = "Disque RAM"
Case Else: s = "Inconnu"
End Select
MsgBox (s)
End Sub
///////////////////////////////////////////////////////
-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à
un
objet COM...
une classe que j'avais ecrite :
Public Enum TypeLecteur
Inconnu = 0
CheminInvalide = 1
Amovible = 2
DisqueInterne = 3
DisqueReseau = 4
CDRom = 5
RAMDisk = 6
End Enum
Public Class InformationVolume
Dim _volume As String
#Region " Déclarations fonctions kernel32"
Private Declare Auto Function GetDriveType
Lib "kernel32.dll"
(ByVal lpRootPathName As String) As TypeLecteur
Private Declare Auto Sub GetVolumeInformation
Lib
"kernel32.dll" ( _
ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As StringBuilder, _
ByRef nVolumeNameSize As Integer, _
ByRef lpVolumeSerialNumber As Integer, _
ByRef lpMaximumComponentLength As Integer, _
ByRef lpFileSystemFlags As Integer, _
ByVal lpFileSystemNameBuffer As
StringBuilder, _
ByRef nFileSystemNameSize As Integer)
Private Declare Auto Sub GetDiskFreeSpaceEx
Lib "kernel32.dll" ( _
ByVal lpDirectoryName As String, _
ByRef lpFreeBytesAvailable As Int64, _
ByRef lpTotalNumberOfBytes As Int64, _
ByRef lpTotalNumberOfFreeBytes As Int64)
#End Region
#Region " Structures Privées"
Private Structure Taille
Dim LibreDisponible As Int64
Dim Total As Int64
Dim TotalLibre As Int64
End Structure
Private Structure InformationVolume
Dim NomVolume As String
Dim NumeroSerie As Integer
Dim SystemeFichier As String
End Structure
#End Region
Public Sub New(ByVal Volume As String)
_volume = Volume
End Sub
#Region " Fonctions privées"
Private Function dotnet_GetDriveType() As
TypeLecteur
Return GetDriveType(_volume)
End Function
Private Function dotnet_GetVolumeInformation()
As InformationVolume
Dim VolumeNameBuffer As New StringBuilder
(255)
Dim VolumeSerialNumber As Integer
Dim MaximumComponentLength As Integer
Dim FileSystemFlags As Integer
Dim FileSystemNameBuffer As New
StringBuilder(255)
GetVolumeInformation(_volume,
VolumeNameBuffer,
VolumeNameBuffer.Capacity, VolumeSerialNumber, _
MaximumComponentLength,
FileSystemFlags,
FileSystemNameBuffer, FileSystemNameBuffer.Capacity)
With dotnet_GetVolumeInformation
.SystemeFichier =
FileSystemNameBuffer.ToString
.NomVolume = VolumeNameBuffer.ToString
.NumeroSerie = VolumeSerialNumber
End With
End Function
Private Function dotnet_GetDiskFreeSpaceEx() As
Taille
Dim _information As Taille
GetDiskFreeSpaceEx(_volume,
_information.LibreDisponible,
_information.Total, _information.TotalLibre)
Return _information
End Function
#End Region
#Region " Propriétes publiques"
ReadOnly Property Volume() As String
Get
Return _volume
End Get
End Property
ReadOnly Property Type() As TypeLecteur
Get
Return dotnet_GetDriveType()
End Get
End Property
ReadOnly Property EspaceLibreDisponible() As
Int64
Get
Return
dotnet_GetDiskFreeSpaceEx.LibreDisponible
End Get
End Property
ReadOnly Property NomVolume() As String
Get
Return
dotnet_GetVolumeInformation.NomVolume
End Get
End Property
ReadOnly Property TailleMax() As Int64
Get
Return dotnet_GetDiskFreeSpaceEx.Total
End Get
End Property
#End Region
End Class
--
http://perso.wanadoo.fr/letchideslandes
.
Ok et merci "Letchideslandes"
Une fois simplifié et juste pour l'utilisation dont j'ai
besoin, c'est à dire récuperer le type du lecteur, ça
donne ça :
Public Enum TypeLecteur
Inconnu = 0
CheminInvalide = 1
Amovible = 2
DisqueInterne = 3
DisqueReseau = 4
CDRom = 5
RAMDisk = 6
End Enum
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As
TypeLecteur
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
Dim TypeL = GetDriveType("H:")
Dim s As String
Select Case TypeL
Case 1 : s = "Non-dispo"
Case 2 : s = "Amovible"
Case 3 : s = "Disque dur"
Case 4 : s = "Réseau"
Case 5 : s = "CDRom"
Case 6 : s = "Ram"
Case Else : s = "Inconnu"
End Select
MsgBox(s)
End Sub
Laurent
/////////////////////////////////////////////////////////-----Message d'origine-----
Laurent B a écrit :Tu as sans doute raison, mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Si quelq'un peut m'aider, merci d'avance ...
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Const CDRom = 5
Private Const Fixed = 3
Private Const RamDisk = 6
Private Const Remote = 4
Private Const Removable = 2
Private Sub Command1_Click()
typeL = GetDriveType("C:")
Dim s As String
Select Case typeL
Case Removable: s = "Amovible"
Case Fixed: s = "Fixe"
Case Remote: s = "Réseau"
Case CDRom: s = "CD-ROM"
Case RamDisk: s = "Disque RAM"
Case Else: s = "Inconnu"
End Select
MsgBox (s)
End Sub
///////////////////////////////////////////////////////-----Message d'origine-----
je pense que c mieux par API, car là tu fait appel à
unobjet COM...
une classe que j'avais ecrite :
Public Enum TypeLecteur
Inconnu = 0
CheminInvalide = 1
Amovible = 2
DisqueInterne = 3
DisqueReseau = 4
CDRom = 5
RAMDisk = 6
End Enum
Public Class InformationVolume
Dim _volume As String
#Region " Déclarations fonctions kernel32"
Private Declare Auto Function GetDriveType
Lib "kernel32.dll"(ByVal lpRootPathName As String) As TypeLecteur
Private Declare Auto Sub GetVolumeInformation
Lib"kernel32.dll" ( _
ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As StringBuilder, _
ByRef nVolumeNameSize As Integer, _
ByRef lpVolumeSerialNumber As Integer, _
ByRef lpMaximumComponentLength As Integer, _
ByRef lpFileSystemFlags As Integer, _
ByVal lpFileSystemNameBuffer As
StringBuilder, _ByRef nFileSystemNameSize As Integer)
Private Declare Auto Sub GetDiskFreeSpaceEx
Lib "kernel32.dll" ( _ByVal lpDirectoryName As String, _
ByRef lpFreeBytesAvailable As Int64, _
ByRef lpTotalNumberOfBytes As Int64, _
ByRef lpTotalNumberOfFreeBytes As Int64)
#End Region
#Region " Structures Privées"
Private Structure Taille
Dim LibreDisponible As Int64
Dim Total As Int64
Dim TotalLibre As Int64
End Structure
Private Structure InformationVolume
Dim NomVolume As String
Dim NumeroSerie As Integer
Dim SystemeFichier As String
End Structure
#End Region
Public Sub New(ByVal Volume As String)
_volume = Volume
End Sub
#Region " Fonctions privées"
Private Function dotnet_GetDriveType() As
TypeLecteurReturn GetDriveType(_volume)
End Function
Private Function dotnet_GetVolumeInformation()
As InformationVolumeDim VolumeNameBuffer As New StringBuilder
(255)Dim VolumeSerialNumber As Integer
Dim MaximumComponentLength As Integer
Dim FileSystemFlags As Integer
Dim FileSystemNameBuffer As New
StringBuilder(255)
GetVolumeInformation(_volume,
VolumeNameBuffer,VolumeNameBuffer.Capacity, VolumeSerialNumber, _
MaximumComponentLength,
FileSystemFlags,FileSystemNameBuffer, FileSystemNameBuffer.Capacity)
With dotnet_GetVolumeInformation
.SystemeFichier =
FileSystemNameBuffer.ToString.NomVolume = VolumeNameBuffer.ToString
.NumeroSerie = VolumeSerialNumber
End With
End Function
Private Function dotnet_GetDiskFreeSpaceEx() As
TailleDim _information As Taille
GetDiskFreeSpaceEx(_volume,
_information.LibreDisponible,_information.Total, _information.TotalLibre)
Return _information
End Function
#End Region
#Region " Propriétes publiques"
ReadOnly Property Volume() As String
Get
Return _volume
End Get
End Property
ReadOnly Property Type() As TypeLecteur
Get
Return dotnet_GetDriveType()
End Get
End Property
ReadOnly Property EspaceLibreDisponible() As
Int64Get
Return
dotnet_GetDiskFreeSpaceEx.LibreDisponibleEnd Get
End Property
ReadOnly Property NomVolume() As String
Get
Return
dotnet_GetVolumeInformation.NomVolumeEnd Get
End Property
ReadOnly Property TailleMax() As Int64
Get
Return dotnet_GetDiskFreeSpaceEx.Total
End Get
End Property
#End Region
End Class
--
http://perso.wanadoo.fr/letchideslandes
.
tu peux suprimer ton select case et faire
messagebox.show(getdrivetype("H:").tostring)
--
http://perso.wanadoo.fr/letchideslandes
.
tu peux suprimer ton select case et faire
messagebox.show(getdrivetype("H:").tostring)
--
http://perso.wanadoo.fr/letchideslandes
.
tu peux suprimer ton select case et faire
messagebox.show(getdrivetype("H:").tostring)
--
http://perso.wanadoo.fr/letchideslandes
.
> En fait il faut utiliser : ""Scripting.FileSystemObject"
> En fait il faut utiliser : ""Scripting.FileSystemObject"
> En fait il faut utiliser : ""Scripting.FileSystemObject"
Tu as sans doute raison,
mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Tu as sans doute raison,
mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Tu as sans doute raison,
mais le probléme, c'est que :
Si je fais ce code en VB 6.0, ça marche du tonnerre,
par contre en VB.Net je récupére une série de chiffres
que je n'arrive pas à exploiter.
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long