Lecteur existant ou non !!!

surfeur en serie Messages postés 35 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 11 mars 2004 - 1 déc. 2003 à 10:56
surfeur en serie Messages postés 35 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 11 mars 2004 - 1 déc. 2003 à 15:10
bonjour tt le monde
je suis debutant en VB ( il faut bien commencer un jour ),Donc s'il vous plait si vs repondez a ce message donner moi tte les explication necesaire ( creation feuille ou module etc...)merci
Donc voila mon pb
j utilise un HDD externe ( kon appellera Z: ) et un rack amovible kon applera Y: ) et je voudrais transferer les donnés sur l un d entre eux ( on va dire le Z: ).Jusque la pas de pb pour moi. kom c est un HDD externe la lettre du lecteur n arive pas tt de suite ce qui est logique et donc je voudrai verifier que le lecteur Z soit connecté pour que les fichier soit transferer sans utiliser de timer.
Je pense que c est un syteme de boucle kil fo faire mais voila je ne sais pas faire ça
merci de votre aide eventuelle

7 réponses

cs_radada Messages postés 488 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 21 avril 2009 1
1 déc. 2003 à 11:09
Ben je pense que tu peux utiliser l'API
Private Declare Function GetLogicalDrives Lib "kernel32" () As Long

The GetLogicalDrives function returns a bitmask representing the currently available disk drives.


qui s'utilise comme ça
    LDs = GetLogicalDrives
    sDrives = "Available drives:"
    For Cnt = 0 To 25
        If (LDs And 2 ^ Cnt) <> 0 Then
            sDrives = sDrives + " " + Chr$(65 + Cnt)
        End If
    Next Cnt


Tu n'a plus qu'a regarder si tu a ta lettre dedans. Si oui -> Zou : )). Il doit peut être y avoir + simple, mais c'est la seule façon que je connaisse depuis les 3 mois de VB :D:D
0
surfeur en serie Messages postés 35 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 11 mars 2004
1 déc. 2003 à 11:21
merci, je vais tester ça et je te dis si ça fonctionne
0
surfeur en serie Messages postés 35 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 11 mars 2004
1 déc. 2003 à 12:28
bon apres essai ça e fonctionne pas comme je voudrai mais ce n est pas loin de ça
en effet une fois kil a tester les lecteur il s arrete tt simplment au lieu de faire une boucle
serrai t il possible de rjoute dedans une boucle et si oui pourrai tu me mettre le code kil me faudrai .
0
cs_radada Messages postés 488 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 21 avril 2009 1
1 déc. 2003 à 13:40
Ben je ne connais pas trop cette api. Voici un exple que j'ai péché sur allapi qui liste visiblement tous les drives avec leur type. En espérant que cela ta serve

'Example by Alexey (alexeyka2001@rambler.ru)
Private Const DRIVE_UNKNOWN = 0
Private Const DRIVE_ABSENT = 1
Private Const DRIVE_REMOVABLE = 2
Private Const DRIVE_FIXED = 3
Private Const DRIVE_REMOTE = 4
Private Const DRIVE_CDROM = 5
Private Const DRIVE_RAMDISK = 6
' returns errors for UNC Path
Private Const ERROR_BAD_DEVICE = 1200&
Private Const ERROR_CONNECTION_UNAVAIL = 1201&
Private Const ERROR_EXTENDED_ERROR = 1208&
Private Const ERROR_MORE_DATA = 234
Private Const ERROR_NOT_SUPPORTED = 50&
Private Const ERROR_NO_NET_OR_BAD_PATH = 1203&
Private Const ERROR_NO_NETWORK = 1222&
Private Const ERROR_NOT_CONNECTED = 2250&
Private Const NO_ERROR = 0

Private Declare Function WNetGetConnection Lib "mpr.dll" Alias _
        "WNetGetConnectionA" (ByVal lpszLocalName As String, _
        ByVal lpszRemoteName As String, cbRemoteName As Long) As Long
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias _
    "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, _
    ByVal lpBuffer As String) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" _
    (ByVal nDrive As String) As Long
Private Function fGetDrives() As String
'Returns all mapped drives
    Dim lngRet As Long
    Dim strDrives As String * 255
    Dim lngTmp As Long
    lngTmp = Len(strDrives)
    lngRet = GetLogicalDriveStrings(lngTmp, strDrives)
    fGetDrives = Left(strDrives, lngRet)
End Function
Private Function fGetUNCPath(strDriveLetter As String) As String
    On Local Error GoTo fGetUNCPath_Err

    Dim Msg As String, lngReturn As Long
    Dim lpszLocalName As String
    Dim lpszRemoteName As String
    Dim cbRemoteName As Long
    lpszLocalName = strDriveLetter
    lpszRemoteName = String$(255, Chr$(32))
    cbRemoteName = Len(lpszRemoteName)
    lngReturn = WNetGetConnection(lpszLocalName, lpszRemoteName, _
                                       cbRemoteName)
    Select Case lngReturn
        Case ERROR_BAD_DEVICE
            Msg = "Error: Bad Device"
        Case ERROR_CONNECTION_UNAVAIL
            Msg = "Error: Connection Un-Available"
        Case ERROR_EXTENDED_ERROR
            Msg = "Error: Extended Error"
        Case ERROR_MORE_DATA
               Msg = "Error: More Data"
        Case ERROR_NOT_SUPPORTED
               Msg = "Error: Feature not Supported"
        Case ERROR_NO_NET_OR_BAD_PATH
               Msg = "Error: No Network Available or Bad Path"

        Case ERROR_NO_NETWORK

               Msg = "Error: No Network Available"
        Case ERROR_NOT_CONNECTED
               Msg = "Error: Not Connected"
        Case NO_ERROR
               ' all is successful...
    End Select
    If Len(Msg) Then
        MsgBox Msg, vbInformation
    Else
        fGetUNCPath = Left$(lpszRemoteName, cbRemoteName)
    End If
fGetUNCPath_End:
    Exit Function
fGetUNCPath_Err:
    MsgBox Err.Description, vbInformation
    Resume fGetUNCPath_End
End Function

Private Function fDriveType(strDriveName As String) As String
    Dim lngRet As Long
    Dim strDrive As String
    lngRet = GetDriveType(strDriveName)
    Select Case lngRet
        Case DRIVE_UNKNOWN 'The drive type cannot be determined.
            strDrive = "Unknown Drive Type"
        Case DRIVE_ABSENT 'The root directory does not exist.
            strDrive = "Drive does not exist"
        Case DRIVE_REMOVABLE 'The drive can be removed from the drive.
            strDrive = "Removable Media"
        Case DRIVE_FIXED 'The disk cannot be removed from the drive.
            strDrive = "Fixed Drive"
        Case DRIVE_REMOTE  'The drive is a remote (network) drive.
            strDrive = "Network Drive"
        Case DRIVE_CDROM 'The drive is a CD-ROM drive.
            strDrive = "CD Rom"
        Case DRIVE_RAMDISK 'The drive is a RAM disk.
            strDrive = "Ram Disk"
    End Select
    fDriveType = strDrive
End Function

Sub sListAllDrives()
    Dim strAllDrives As String
    Dim strTmp As String
    
    strAllDrives = fGetDrives
    If strAllDrives <> "" Then
        Do
            strTmp = Mid$(strAllDrives, 1, InStr(strAllDrives, vbNullChar) - 1)
            strAllDrives = Mid$(strAllDrives, InStr(strAllDrives, vbNullChar) + 1)
            Select Case fDriveType(strTmp)
                Case "Removable Media":
                    Debug.Print "Removable drive :  " & strTmp
                Case "CD Rom":
                    Debug.Print "   CD Rom drive :  " & strTmp
                Case "Fixed Drive":
                    Debug.Print "    Local drive :  " & strTmp
                Case "Network Drive":
                    Debug.Print "  Network drive :  " & strTmp
                    Debug.Print "       UNC Path :  " & _
                                fGetUNCPath(Left$(strTmp, Len(strTmp) - 1))
            End Select
        Loop While strAllDrives <> ""
    End If
End Sub

Private Sub Form_Load()
    Debug.Print "All available drives: "
    sListAllDrives
End Sub

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
surfeur en serie Messages postés 35 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 11 mars 2004
1 déc. 2003 à 14:24
j'ai deja essaie ce system mais
il y a un temp entre le branchement et la detection du lecteur , ce qui est logique mais il y a aussi un temp entre le temp ou ce system que tu me donne me trouve le lecteur et le temp ou il est aficher
en gros ce system me trouve bien le lecteur kil me fo mais il me le trouve trop tot ce qui fais qu au moment du transfert il me dis que le lecteur est introuvable
++
0
cs_radada Messages postés 488 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 21 avril 2009 1
1 déc. 2003 à 14:31
Ah bon, dsl alors ; ), je sais pas : (
0
surfeur en serie Messages postés 35 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 11 mars 2004
1 déc. 2003 à 15:10
pas grave, j esper que d autre lirons ce mesage et kil pourrons maider tt simpment
merci encore pour ton aide
@++
0
Rejoignez-nous