Détection de lecteur sur machine distante(VB)

Combo -  
Dworf Messages postés 627 Statut Membre -
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. Dworf Messages postés 627 Statut Membre 17
     
    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. Combo
       
      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
  2. Dworf Messages postés 627 Statut Membre 17
     
    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
  3. Dworf Messages postés 627 Statut Membre 17
     
    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. Combo
       
      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
  4. Dworf Messages postés 627 Statut Membre 17
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Dworf Messages postés 627 Statut Membre 17
     
    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