2009-02-12 7 views
4

Je travaille sur un simple outil de copie pour copier des fichiers sur des appareils photo numériques. J'ai écrit le code de copie de fichier, j'ai tout bien connecté.Utilisation de FolderBrowserDialog sur un périphérique amovible/un stockage amovible

Le problème que j'ai semble être avec le FolderBrowserDialog. Dans Vista (je n'ai pas encore vérifié XP), je peux naviguer jusqu'aux répertoires de la caméra. Cependant, FolderBrowserDialog ne me laisse pas sélectionner un répertoire sur la caméra. Le bouton OK est grisé.

En regardant le chemin pour les fichiers de l'appareil photo, il ressemble à ceci:

Computer\[Camera Name]\Removable storage\AnotherDirectory\ 

Comme ce n'est pas un chemin valide (intead de C: \ peu importe), je devine la FolderBrowserDialog n » J'aime ça.

Il fonctionne très bien à partir d'un nom de chemin valide, mais pas l'appareil hors tension ...

Quelqu'un at-il des suggestions pour contourner ce problème?

Mise à jour

Pour confirmer la question de OEFE le chemin est effectivement affiché comme:

Computer\[Camera Name]\Removable storage\AnotherDirectory\ 

suggestion de ChulioMartinez d'utiliser SHBrowseForFolder fonctionne, et je marquer comme la bonne réponse. Merci pour votre aide Chulio.

+0

Comment obtenez-vous le chemin réel? SHBrowseForFolder me renvoie un PIDL valide mais SHGetPathFromIDList ne parvient pas à me renvoyer le chemin. Cela fonctionne avec des chemins non-MTP mais pas avec des chemins MTP. –

Répondre

3

Ma conjecture serait que l'emplacement n'a pas une représentation de système de fichiers (chemin) comme c: ... \ mon appareil photo.

Vous devriez être en mesure d'obtenir le PIDL du dossier, (il devrait être l'un les drapeaux pour la fonction), et implémenter la copie en utilisant les interfaces shell COM.

SHBrowseForFolder

Using PIDL to enumerate a folder

0

Existe-t-il un moyen de mapper le chemin d'accès de la caméra à une lettre de lecteur? (Je pense quelque chose comme "subst" ou "net use" à partir d'une invite de commande.) Peut-être que cela pourrait tromper le FolderBrowserDialog en se comportant comme vous le souhaitez?

0

Où avez-vous obtenu le chemin de? De la barre d'adresse dans l'explorateur? Cela n'affiche pas le chemin du système de fichiers, mais une représentation "conviviale" de celui-ci.

Pour obtenir le chemin, cliquez avec le bouton droit sur la barre d'adresse et choisissez "Copier l'adresse comme texte" ou "Modifier l'adresse".

Questions connexes