Détection de lecteur sur machine distante(VB)

Salut!
Je pense avoir trouvé le code me servant à détecter automatiquement les disques durs présents sur une machine de mon réseau :

Public Function xIsDriveReady(ByVal DriveName As String) As Boolean
Dim objFileSys As Object
Dim objDrive As Object
Dim strDrive As String

On Error GoTo DriveError

If Left(DriveName, 1) = "\" Then
strDrive = DriveName ' If it's a network path, then let it as it is.
Else
strDrive = Left(DriveName, 1) & ":" ' Create the drive name, to be sure it's in the correct format. eg: 'C:'
End If
Set objFileSys = CreateObject("Scripting.FileSystemObject") ' Create the filesystem object
Set objDrive = objFileSys.GetDrive(CStr(strDrive))
If objFileSys.DriveExists(strDrive) Then ' Test if the drive exist
xIsDriveReady = objDrive.IsReady ' Test if it is ready to be used
Else
xIsDriveReady = False
End If
Exit Function

DriveError:
xIsDriveReady = False
End Function

Le problème est que je n'arive pas à l'exploiter, il ne produit rien quand je l'exécute et je ne sais pas quoi faire pour y remédier. Merci de m'aider...

5 réponses

  1. salut
    y'a ca aussi

    Private Sub Form_Load()
    Dim fs, d, dc, s, n
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set dc = fs.Drives
    For Each d In dc
    s = s & d.DriveLetter & " - "
    If d.DriveType = 3 Then
    n = d.ShareName
    Else
    'n = d.VolumeName
    End If
    s = s & n & vbCrLf
    Next
    MsgBox s

    End Sub

    mais ca tourne qu'ne local, à toi de trouver comment le faire tourner pour une machine du réseau
    0
    1. bon
      je sais pas trop et j'ai pas le temps de chercher
      alors on va faire ça façon bidouillique
      tu reprends mon code et tu le fais tourner en boucle en testant une lettre différente à chaque fois (tu enlèves l'inputbox et tu rentres le chemin en dur) ok?
      0
      1. c'est tout simple
        imaginons que t'a une machine qui s'appelle4fromages ok?
        quand il te demande le nom du lecteur ben tu entres
        \\4fromages\c$ (ou d$ ou e$...)
        0
        1. C'est tout simple et je n'y avais pas pensé c'est vrai, merci de ton aide. J'ai une autre question : il faudrait que cette détection se fasse automatiquement lors de l'exécution de mon soft sans que j'ai besoin de taper 1 par 1 les lettres des lecteurs dans l'input box.Je n'ai pas besoin de savoir si la machine possède d'autres lecteurs que les disques durs (CD-rom ou périphériques de sauvegarde).Merci d'avance pour ta précieuse aide.
          0
      2. c'est encore moaaaa
        laisse tomber et utilise ça:

        Option Explicit
        Private Sub Form_Load()
        Dim fso
        Dim r, r1 As String
        Set fso = CreateObject("Scripting.FileSystemObject")
        r = InputBox("Entrez le nom du lecteur que vous voulez savoir s'il existe ou pas:::::")
        If r = "" Then
        Exit Sub
        Else
        If fso.DriveExists(r) Then
        MsgBox "ca existe"
        Else
        MsgBox "perduuuuuu"
        End If
        End If
        Unload Me
        End Sub
        1
        1. Je te remercie beaucoup pour ta précieuse aide, ça ma appris une bonne chose. Mais dans mon cas, ce n'est pas sur ma machine que je veux savoir si tel ou tel lecteur existe mais sur une autre qui fait partie du réseau de mon entreprise. Comment dois-je faire? Où dois-je taper l'adresse IP lui correspondant?Merci.
          0
      3. bien sûr qu'il se passe rien puisqu'on ne lui demande rien

        copies ca sous vb, au moins ca te fera quelque chose:

        Option Explicit

        Private Sub Form_Load()
        Dim r
        Dim drivename As String
        drivename = "c:\"
        r = xIsDriveReady(drivename)
        Unload Me
        End Sub
        Public Function xIsDriveReady(ByVal drivename As String) As Boolean
        Dim objFileSys As Object
        Dim objDrive As Object
        Dim strDrive As String

        On Error GoTo DriveError

        If Left(drivename, 1) = "\" Then
        strDrive = drivename ' If it's a network path, then let it as it is.
        Else
        strDrive = Left(drivename, 1) & ":" ' Create the drive name, to be sure it's in the correct format. eg: 'C:'
        End If
        Set objFileSys = CreateObject("Scripting.FileSystemObject") ' Create the filesystem object
        Set objDrive = objFileSys.GetDrive(CStr(strDrive))
        If objFileSys.DriveExists(strDrive) Then ' Test if the drive exist
        xIsDriveReady = objDrive.IsReady ' Test if it is ready to be used
        MsgBox "yop"
        Else
        xIsDriveReady = False
        MsgBox "nop"
        End If
        Exit Function

        DriveError:
        xIsDriveReady = False
        End Function
        0