Zexplorer (explorateur windows)

4/5 (6 avis)

Vue 15 460 fois - Téléchargée 1 598 fois

Description

zExplorer

Ce projet montre comment inclure un contrôle de type "Browse For Folder" directement à l'intérieur d'une fenêtre, au lieu d'avoir à recourir au popup "FolderBrowserDialog".

L'exemple simule les fonctions de base de l'explorateur Windows, dont il s'inspire.

La fenêtre est divisée en 2 parties :
1 - L'explorateur zBff (TreeView) affiché dans un conteneur situé à gauche de la fenêtre.
2 - Un DataGridView qui affiche le contenu du répertoire sous forme de tableau.
Un double clic sur un nom de fichier, lance l'exécution ou l'ouverture du document avec le programme associé.

Le TreeView comporte un menu contextuel qui permet au choix de :
- Créer un nouveau dossier.
- Renommer le dossier.
- Supprimer le dossier.
En cas de suppression, une boîte de message personnalisée demande confirmation de l'effacement, avant d'envoyer le dossier dans la corbeille.

On peut déplacer un dossier dans l'arborescence du TreeView par "drag & drop".

Le programme mémorise (dans la base de registre) le dernier répertoire utilisé, afin de s'y replacer automatiquement d'une session à l'autre.

Les messages sont affichés en français, sur un ordinateur qui utilise la langue de Molière, sinon en anglais pour les autres.

On peut personnaliser les couleurs de zBff de la façon suivante :
BF.SetProperty(BF.CtrlHandle, BF.Bff_ColorBackTreeView, Api.RGB(255, 255, 255)); // TreeView background color
BF.SetProperty(BF.CtrlHandle, BF.Bff_ColorTextTreeView, Api.RGB(0, 0, 0)); // TreeView text and line color
BF.SetProperty(BF.CtrlHandle, BF.Bff_ColorBackSelected, Api.RGB(178, 180, 191)); // Selected item background color
BF.SetProperty(BF.CtrlHandle, BF.Bff_ColorTextSelected, Api.RGB(0, 0, 0)); // Selected item text color

Comme le splitter DotNET ne fonctionne pas correctement avec un contrôle créé hors de l'environnement (cf ZBFF), le projet utilise un code spécifique basé sur la classe "button" afin de redimensionner les contrôles à la volée.

Reste à faire :
- L'ajout ou la suppression de périphériques de stockage (fileSystemWatcher).
- La gestion des fichiers à l'intérieur d'un répertoire.

Conclusion :


Le projet s'appuie sur la DLL Win32 "zBff.dll" qui se trouve dans le répertoire "bing\debug".
Cette DLL, qui ne pèse que 33 Ko, est mise gracieusement à votre disposition, car son portage DotNET nécessite de toute façon une utilisation importante de code non managé.
Alors autant réutiliser un code qui fonctionne déjà avec n'importe quel langage de développement Win32 ou DotNET et ce depuis des années.

Cependant, si vous souhaitez vous plonger dans les arcanes de la programmation Win32 bas niveau, il existe un excellent code source C#, avec des fonctions similaires, vous le trouverez ici :
http://www.codeproject.com/cs/miscctrl/FileBrowser.asp

Patrice Terrier

Codes Sources

A voir également

Ajouter un commentaire Commentaires
fdouieb
Messages postés
264
Date d'inscription
vendredi 12 décembre 2003
Statut
Membre
Dernière intervention
12 juin 2013
3
17 avril 2008 à 15:14
Superbe tas source.

Une petite question. Je chercher a ajouter dans l'explorateur windows un dossier ou disque virtuel qui me permet de voir l'arboresence de mon compte FTP lorsque je clique dessus. Est ce que tu pourrais m'aider pour creer ce dossier ou ce disque virtuel.

Merci
MOOKIES
Messages postés
35
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
2 octobre 2008

6 déc. 2007 à 03:49
Je n'arrive pas a faire tourner ce projet sous vista avec vs2008 alors que sous xp et vs2005 pas de probleme...

Cela est clairement due a la compatibilitée de l api win32.
Quelqu'un a t'il reussi a modifier la class win32 en question pour l'adapter aux noyau de vista ?
(ref expliquant une des differences http://msdn2.microsoft.com/fr-fr/visualc/bb880520.aspx )

MAIS SI QUELQU UN L AURAIT DEJA FAIT ET BIEN COMPRIS KTM, si il peut donner un coup de main se sera bien venu...

Je m'attaque donc a la reecriture de win32, car cet exploreur est quand meme bien sympa..
J'espere avoir fini avant la fin du mois.(bien sure si sa marche, je la posterai)

Merci encore Zap. C'est un plaisir d'apprendre sur tes scources.
cs_Zap
Messages postés
78
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
14 août 2010

11 déc. 2006 à 10:16
MasterCatz,

Le but de ce projet, comme je l'indique au début de la description, est surtout de proposer une alternative à "FolderBrowserDialog" pour permettre l'intégration de la fonction "BrowseForFolder" directement dans une fenêtre.

Je laisse le soin aux programmeurs que vous êtes, de compléter ou d'adapter le code en fonction de vos besoins.

Dans mes propres applications non managées, j'utilise effectivement un "ListView".

Vous pouvez voir un exemple complet de la façon dont j'utilise ce contrôle, en téléchargeant le Player multimédia gratuit "ZAP Media Lite", qui se trouve ici :
http://www.zapsolution.com/zfreefr.htm

Patrice Terrier
mastercatz
Messages postés
193
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
12 août 2010

11 déc. 2006 à 07:58
Sympa, mais quelques remarques :
1) Pas de gestion d'erreurs en cas de tentative d'ouverture d'un dossier sur lequel on n'a pas d'acces.
2) Pas de visualisation des sous dossiers dans le DataGridView
Sinon je pense que ca serait mieux d'essayer d'inclure la dll dans le projet en source (unsafe ou non) et d'essayer de convertir. Aussi pourquoi n'utilises-tu pas un ListView plutot ? Ce serait le même résultat et ca te permettrais en plus de faire des changement de visualisation.
Bonne continuation.
cs_Zap
Messages postés
78
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
14 août 2010

8 déc. 2006 à 10:54
WERERABBIT

J'ai ajouté le try/catch pour détecter les associations de fichier manquantes et en informer l'utilisateur.
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.