Présentation des extensions d’espace de noms shell

Windows Explorer fournit une représentation graphique de l’espace de noms Shell associée à des outils qui permettent aux utilisateurs d’interagir avec des objets Shell. Avec une extension d’espace de noms, vous pouvez prendre n’importe quel corps de données et faire en sorte que Windows Explorer les présente à l’utilisateur sous la forme d’un dossier virtuel. Lorsqu’un utilisateur accède à ce dossier, vos données sont présentées sous la forme d’une hiérarchie structurée par arborescence de dossiers et de fichiers, comme le reste de l’espace de noms Shell. Les utilisateurs et les applications peuvent interagir avec le contenu de ce dossier virtuel de la même manière qu’avec n’importe quel autre objet d’espace de noms. Ce document explique comment créer une extension d’espace de noms.

Fonctionnement d’une extension d’espace de noms

En arrière-plan, chaque dossier que Windows Explorer affiche est représenté par un objet COM (Component Object Model) appelé objet folder. Chaque fois que l’utilisateur interagit avec un dossier ou son contenu, l’interpréteur de commandes communique avec l’objet dossier associé via l’une des nombreuses interfaces standard. L’objet dossier fait ensuite tout ce qui est nécessaire pour répondre à l’action de l’utilisateur, et l’interpréteur de commandes met à jour l’affichage Explorer Windows.

La majorité des fichiers et dossiers avec lesquels les utilisateurs interagissent font partie du système de fichiers ou d’un dossier virtuel système tel que la Corbeille. D’autres documents expliquent comment personnaliser le comportement de ces dossiers standard pour répondre aux exigences de votre application en modifiant le Registre ou en implémentant des gestionnaires d’extension Shell. Toutefois, l’extension de l’interpréteur de commandes de ces manières est particulièrement utile lorsque vos informations peuvent être facilement empaquetées sous la forme de fichiers ou de dossiers normaux de système de fichiers.

Il existe un certain nombre de situations où le stockage de données en tant que collection de dossiers et de fichiers de système de fichiers peut être indésirable, voire impossible. Voici quelques exemples de ce type de données :

  • Collection d’éléments qui est empaquetée le plus efficacement dans un seul fichier, comme une base de données.
  • Collection d’éléments stockés sur un ordinateur distant qui n’a pas de système de fichiers Windows standard. Les informations stockées sur un assistant numérique personnel (PDA) ou un appareil photo numérique constituent un exemple de ces données.
  • Collection d’éléments qui ne représente pas les données stockées. Les liens d’imprimante contenus dans le dossier Imprimantes standard constituent un exemple de ces données.

Une façon de présenter ce type de données à un utilisateur consiste à écrire une application pour permettre aux utilisateurs d’afficher et d’interagir avec les différents éléments. Toutefois, si vos données peuvent être présentées sous forme de hiérarchie de dossiers/fichiers, la plupart des fonctionnalités que vous devez implémenter peuvent être des services d’interface utilisateur déjà fournis par Windows Explorer. Une approche beaucoup plus efficace pourrait consister à écrire une extension d’espace de noms et à laisser Windows Explorer devenir votre interface utilisateur graphique.

Pour implémenter une extension d’espace de noms, vos informations doivent être organisées en tant qu’espace de noms structuré par arborescence. La racine de votre espace de noms est présentée sous la forme d’un dossier virtuel dans l’espace de noms Shell. Le dossier racine, ainsi que tous ses sous-dossiers et éléments de données, fait partie de l’espace de noms Shell, et Windows Explorer devient votre interface utilisateur. Vous pouvez ainsi présenter vos informations à l’utilisateur d’une manière familière et facilement accessible avec beaucoup moins de programmation d’interface utilisateur que ce qui serait nécessaire pour une application personnalisée.

Une extension d’espace de noms se compose de deux composants de base :

  • Un gestionnaire de données
  • Interface entre le gestionnaire de données et Windows Explorer

Le premier composant de la liste vous appartient entièrement. Vous pouvez stocker et gérer vos données de la manière la plus efficace. Le deuxième composant est le code nécessaire pour empaqueter vos données en tant qu’objets de dossier et gérer l’interaction avec windows Explorer. Windows Explorer pouvez ensuite appeler ces objets pour permettre aux utilisateurs d’afficher et d’interagir avec vos données comme s’il s’agissait d’une collection de dossiers et de fichiers. Les objets de dossier de votre extension d’espace de noms doivent interagir avec Windows Explorer comme s’il s’agissait de dossiers normaux. Avant de tenter d’implémenter une extension d’espace de noms, vous devez d’abord comprendre comment Windows Explorer gère un objet de dossier.

Objet d’affichage de dossier système par défaut (DefView)

L’interpréteur de commandes fournit une implémentation par défaut de l’affichage des dossiers, familièrement appelée DefView, afin que vous puissiez éviter une grande partie du travail d’implémentation de votre propre extension d’espace de noms. Étant donné que certaines fonctionnalités d’affichage ne peuvent pas être obtenues via des vues personnalisées, il est souvent recommandé d’utiliser l’objet d’affichage de dossier système par défaut à la place d’une vue personnalisée. Pour plus d’informations, consultez SHCreateShellFolderView.

Comment Windows Explorer interagit avec une extension d’espace de noms

Windows Explorer fournit aux utilisateurs une interface graphique graphique qui leur permet d’effectuer diverses tâches, notamment :

L’interface utilisateur utilisateur windows Explorer comprend cinq composants de base. L’illustration suivante nomme les composants et montre où ils sont généralement affichés dans Windows Explorer.

illustration montrant les composants de l’interface utilisateur de l’explorateur Windows

Lorsqu’un utilisateur affiche un dossier qui appartient à une extension d’espace de noms dans Windows Explorer, l’objet dossier a au moins un contrôle partiel sur le contenu des cinq zones.

Arborescence

L’arborescence fournit une vue d’ensemble de l’espace de noms. Cette zone héberge un contrôle d’arborescence qui peut afficher chaque dossier d’espace de noms et la position du dossier dans la hiérarchie d’espaces de noms. Un utilisateur peut effectuer plusieurs opérations avec la zone d’arborescence, notamment :

  • Affichage ou masquage du niveau suivant dans l’espace de noms.
  • Copie, déplacement ou suppression de dossiers.
  • Cliquez avec le bouton droit sur un dossier pour afficher un menu contextuel.
  • Sélection d’un dossier et affichage de son contenu dans l’affichage des dossiers.

L’arborescence communique avec les objets de dossier principalement via leur interface IShellFolder . Par exemple, lorsqu’un utilisateur clique sur le signe plus (+) en regard de l’icône du dossier, Windows Explorer développe l’affichage pour afficher les sous-dossiers du dossier. Pour obtenir les informations nécessaires à la mise à jour de l’arborescence, l’interpréteur de commandes effectue plusieurs appels à l’interface IShellFolder de l’objet de dossier pour :

  • Demandez les attributs du dossier.
  • Énumérez le contenu du dossier.
  • Demandez des noms d’affichage pour chaque sous-dossier.
  • Demandez une icône à afficher en regard de chaque dossier.

Windows Explorer met ensuite à jour l’arborescence pour afficher les sous-dossiers du dossier sélectionné. Si les sous-dossiers ont des sous-dossiers, un caractère « + » s’affiche en regard de leur icône de dossier. Il existe un certain nombre de tâches plus sophistiquées qu’un utilisateur peut également effectuer avec l’arborescence, notamment :

  • Utiliser le Presse-papiers pour couper ou copier un dossier et le coller dans un autre dossier.
  • Utilisation du glisser-déplacer pour couper ou copier un dossier et le déposer dans un autre dossier.
  • Utilisation d’un moteur de recherche pour rechercher des éléments dans un dossier ou ses sous-dossiers.
  • Modification des propriétés du dossier.

Pour une présentation plus détaillée de la façon dont une extension d’espace de noms gère ces actions utilisateur, consultez Implémentation des interfaces d’objet de dossier de base.

Vue Dossier

Lorsqu’un utilisateur sélectionne un dossier, le contenu du dossier s’affiche dans la vue dossier. Dans une certaine mesure, les fonctionnalités normales de l’affichage dossier chevauchent l’arborescence. Les utilisateurs peuvent déplacer ou copier des dossiers, modifier les propriétés d’un dossier, afficher le contenu d’un sous-dossier, afficher un menu contextuel pour un dossier, etc. Toutefois, il existe des différences distinctes entre l’arborescence et l’affichage dossier :

  • La vue Dossier n’affiche que le contenu d’un seul dossier, pas une partie ou la totalité de la hiérarchie d’espaces de noms.
  • La vue Dossier affiche les objets de fichier ainsi que les objets de dossier.
  • L’affichage Dossier peut afficher beaucoup plus d’informations sur les objets que l’arborescence.
  • La vue Dossier permet aux extensions d’espace de noms d’avoir un contrôle presque total sur les informations affichées et la façon dont elles sont affichées. Seuls les aspects mineurs de l’arborescence, tels que les icônes de dossier, peuvent être modifiés.

Contrairement à l’arborescence, Windows Explorer ne contrôle pas directement le contenu de l’affichage des dossiers. L’affichage dossier est une zone que Windows Explorer fournit aux objets de dossier. L’affichage et la gestion du contenu d’un dossier dans l’affichage dossier sont de la responsabilité de l’objet dossier. Bien que la plupart des vues de dossiers suivent un format assez standard, il existe en fait peu de limitations quant à ce qui peut être affiché ou comment. Un cas extrême est le dossier Internet, qui est un navigateur complet.

Lorsqu’un utilisateur sélectionne un dossier qui appartient à votre extension d’espace de noms, vous créez une fenêtre et passez son handle à Windows Explorer. Cette fenêtre devient un enfant de la fenêtre d’affichage de dossiers. Windows Explorer fournit les dimensions de la fenêtre d’affichage de dossiers, mais n’impose aucune restriction sur le contenu de votre fenêtre enfant. Vous pouvez ensuite utiliser la fenêtre enfant pour afficher l’affichage des dossiers du dossier.

Les extensions d’espace de noms utilisent l’une des deux approches pour créer un affichage de dossiers :

  • Utilisez votre fenêtre enfant pour héberger un contrôle d’affichage de liste . Ce contrôle vous permet d’afficher le contenu d’un dossier de la même façon que windows Explorer vue classique.
  • Utilisez votre fenêtre enfant pour héberger un contrôle WebBrowser et utilisez un document HTML dynamique (DHTML) pour afficher le contenu du dossier.

Les deux approches affichent un affichage de dossiers qui ressemble beaucoup à celui affiché pour les dossiers système. Toutefois, si vous souhaitez utiliser un autre schéma d’affichage, vous êtes libre de le faire.

Comme la plupart des applications Windows, Windows Explorer fournit à l’utilisateur une collection d’outils. Une sélection complète d’outils est disponible via la barre de menus. Les outils les plus couramment utilisés sont également représentés par des boutons ou des zones d’édition dans une barre d’outils. Contrairement à de nombreuses applications Windows, la barre de menus Windows Explorer est en fait un contrôle de barre d’outils qui a été personnalisé pour se comporter comme un menu conventionnel. La barre de menus et la barre d’outils sont incorporées dans un contrôle de barre d’outils pour permettre aux utilisateurs d’organiser les contrôles individuels en fonction de leurs besoins.

Par défaut, Windows Explorer prend en charge un ensemble standard de boutons et d’éléments de menu, tels que Copier et Propriétés. Votre extension d’espace de noms peut personnaliser la barre de menus et les barres d’outils en supprimant les outils standard et en ajoutant des outils personnalisés. Lorsque votre objet d’affichage de dossiers est initialisé, Windows Explorer transmet un pointeur à son interface IShellBrowser. Cette interface prend en charge plusieurs méthodes que vous pouvez appeler pour personnaliser la barre de menus et la barre d’outils. Lorsque l’utilisateur sélectionne l’un de vos éléments de menu ou boutons de barre d’outils personnalisés, Windows Explorer transfère WM_COMMAND messages pour les éléments de menu et de barre d’outils personnalisés à la procédure de fenêtre de votre fenêtre enfant.

Barre d’état

La barre windows Explorer status affiche des informations sur l’objet actuellement sélectionné. Votre extension d’espace de noms peut utiliser la barre status pour afficher status informations, telles qu’une chaîne de texte. Vous pouvez personnaliser la barre status en appelant IShellBrowser.