Ecrire sur un périphérique usb à partir de son nom

moimael Messages postés 23 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 27 août 2010 - 28 déc. 2006 à 13:35
moimael Messages postés 23 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 27 août 2010 - 9 févr. 2007 à 23:08
Bonjour,

Voila je suis débutant en programmation et je developpe un petit logiciel pour le twin (pour ceux qui ne connaissent pas c'est le premier téléphone gsm-wifi de neuf telecom) .Pour l'instant il gère les notes et les photos (bien que pour les photos ca ne soit pas encore entierement fonctionel). Seulement, quand je veut envoyer une note vers le twin, je me sers de sa lettre de lecteur qui est D: sur mon pc. Je me doute bien que chez d'autres personnes, la lettre n'est pas la même. Pour rendre le logiciel compatible avec tous les pc, je voudrais donc savoir si il existe une autre méthode pour écrire sur un périphérique en se servant du nom du périphérique(tous les twin sont reconnus avec le nom MYPHONE quand ils sont connéctés) par exemple, au lieu de sa lettre.

Merci pour votre aide.

12 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 déc. 2006 à 17:30
utilise donc la fonction GetLogicalDrives de la librairie kernel32 pour recenser tous les volumes présents et boucle sur ces volumes pour en extraire le nom en utilisant la fonction GetVolumeInformation de la librairie Kernel32 également.

Tu as tout( ce qu'il te faut comme exemple sur ALLAPI !

Si tu n'y parviens vraiment pas avec ces indications, je te code celà mais je préfèrerais te voir t'y mettre un peu...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 déc. 2006 à 17:50
Tiens,

Je t'ai "baclé" vite fait quelque-chose... dans l'esprit de mon message précédent !

A toi de l'analyser et de le perfectionner ou l'adapter... comme tu l'entends :

Private Declare Function GetVolumeInformation& Lib "kernel32" Alias "GetVolumeInformationA" _
   (ByVal lpRootPathName As String, ByVal pVolumeNameBuffer As String, _
    ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, _
    lpMaximumComponentLength As Long, lpFileSystemFlags As Long, _
    ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long)
Private Declare Function GetLogicalDrives Lib "kernel32" () As Long


Private Sub Command1_Click()
    Dim LDs As Long, Cnt As Long, sDrives As String
    LDs = GetLogicalDrives
    sDrives = "Available drives:"
    For Cnt = 0 To 25
        If (LDs And 2 ^ Cnt) <> 0 Then
            sDrives = sDrives + " " + Chr$(65 + Cnt)
            Dim ser As Long, I As Long, j As Long
            Dim z0 As String * 256
            Dim z As String * 256
            toto = Chr$(65 + Cnt)
            Call GetVolumeInformation(toto + ":" & Chr$(0), z0, 256, 0, 0, 0, z, 256)
            nomlect = Left$(z0, InStr(z0, Chr$(0)) - 1)
            MsgBox toto & " " & nomlect
        End If
    Next Cnt
End Sub


 
0
moimael Messages postés 23 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 27 août 2010
28 déc. 2006 à 18:02
C'est du vb ce que tu m'indique ou du vb.net ? La je dois avouer que je ne comprends pas trop comment me servir de ce que tu m'indique.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 déc. 2006 à 18:08
Ah !
Excuses.... C'est écrit en VB

Mais les fonctions à déclarer étant rigoureusement les mêmes, il te suffit d'adapter à VB.Net les instructions de command1.
Le principe est identique
0

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

Posez votre question
moimael Messages postés 23 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 27 août 2010
28 déc. 2006 à 18:08
Il n'y a pas un moyen plus simple, sans faire appel a une api exterieure ?

Merci pour l'aide que tu m'apporte.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 déc. 2006 à 18:10
Je ne connais pas de moyen plus simple ni (en tout état de cause) plus rapide que l'utilisation de l'API de Windows... (à moins que VB.Net n'offre du "plus mieux ! "
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 déc. 2006 à 18:19
Il y aura bien un VB.Netiste pour transposer celà en VB.Net... (ce devrait être facile). S'il faut que je commente le code VB pour faciliter les choses, il n'y a qu'à demander.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 déc. 2006 à 18:30
Un dernier mot (je dois sortir) :

Pour répondre à ta question :

"La je dois avouer que je ne comprends pas trop comment me servir de ce que tu m'indique."

C'est simple : la boucle te donne la lettre (toto) et le nom (nomlect).

Quand tu trouve nomlect = "le_nom_que_tu_cherches", tu en connais dpnc la lettre (toto).
Si donc toto = "F", tu sais que ton "machin" est sur le disque F, pardi
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
31 déc. 2006 à 20:48
salut,

tu peux obtenir le nom du périph en fonction de la lettre de lecteur ou inversement...

en VB6:
http://www.vbfrance.com/codes/OBTENIR-LISTE-PEPRIPHERIQUES-EJECTABLES-CLES-USB-DISQUE-DURS_28573.aspx

ShareVB
0
moimael Messages postés 23 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 27 août 2010
8 févr. 2007 à 23:02
J'ai trouvé un moyen bcp plus simple en vb.net, il fonctionne parfaitement, pour ceux que ca interresse :

For Each di As DriveInfo In DriveInfo.GetDrives()
                If di.IsReady Then
                    If di.VolumeLabel = "MYPHONE" Then
                        Dim lettre As String
                        lettre = di.Name
                    End If
                End If
Next
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
9 févr. 2007 à 21:22
salut,

effectivement, ca dépend de ce que l'on appelle "nom", moi je ne pensais pas au label du volume mais au nom de périphérique...dsl...

ShareVB
0
moimael Messages postés 23 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 27 août 2010
9 févr. 2007 à 23:08
Bah pas grave, merci pour ton aide et d'avoir pris le temps de me répondre, c'était sympa de ta part.
0
Rejoignez-nous