SHAddToRecentDocs, fonction (shlobj_core.h)

Avertit le système qu’un élément a été accédé, afin de suivre les éléments utilisés le plus récemment et le plus fréquemment. Cette fonction peut également être utilisée pour effacer toutes les données d’utilisation.

Syntaxe

void SHAddToRecentDocs(
                 UINT    uFlags,
  [in, optional] LPCVOID pv
);

Paramètres

uFlags

Type : UINT

Valeur de l’énumération SHARD qui indique la forme des informations pointées par le paramètre pv .

[in, optional] pv

Type : LPCVOID

Pointeur vers les données qui identifie l’élément auquel l’accès a été effectué. L’élément peut être spécifié dans ce paramètre sous l’une des formes suivantes :

Définissez ce paramètre sur NULL pour effacer toutes les données d’utilisation sur tous les éléments.

Valeur de retour

None

Remarques

Les statistiques d’utilisation collectées par le biais des appels à cette méthode sont utilisées pour déterminer les listes d’éléments consultés le plus récemment et le plus fréquemment. Ces listes sont affichées dans le menu Démarrer et, dans Windows 7 et versions ultérieures, dans la liste de raccourcis d’une application.

Lorsque cette méthode est appelée, elle affecte les domaines suivants :

  • Mises à jour les listes Récents et Fréquents pour la liste de raccourcis de l’application associée.
  • Ajoute un raccourci au dossier Récent de l’utilisateur (FOLDERID_Recent, CSIDL_RECENT). Cela se reflète dans le menu Mes documents récents (Windows XP) et Éléments récents (Windows Vista et versions ultérieures) du menu Démarrer .
  • Ajoute un raccourci au sous-menu Documents du menu Démarrer classique. (Notez que l’option de menu Démarrer classique n’est pas disponible dans Windows 7 et versions ultérieures.)
Les éléments représentés par un IShellLink ne sont pas ajoutés au dossier Récent , bien qu’ils soient reflétés dans la liste de raccourcis d’une application.

Dans certains cas, notamment lorsqu’un utilisateur ouvre un élément via Windows Explorer ou utilise la boîte de dialogue de fichier commune pour ouvrir, enregistrer ou créer un fichier, l’interpréteur de commandes appelle SHAddToRecentDocs au nom de l’application. Une application qui dispose d’une interface utilisateur personnalisée pour sélectionner des éléments doit appeler SHAddToRecentDocs explicitement pour garantir des statistiques précises. Les appels dupliqués étant pris en compte par le système, il n’y a aucun risque de déformation des données.

Les fichiers exécutables (.exe) sont filtrés à partir de la liste des documents récemment utilisés dans Windows XP et les versions ultérieures. Bien que SHAddToRecentDocs accepte le chemin d’accès d’un fichier exécutable, ce fichier n’apparaîtra pas dans la liste Éléments récents .

Les dossiers sont également acceptés par SHAddToRecentDocs, mais ils apparaissent uniquement dans la liste de raccourcis pour le bouton de barre des tâches Windows Explorer. Les dossiers n’apparaissent pas dans la liste de raccourcis d’une autre application.

Dans certains cas, SHAddToRecentDocs tente d’inscrire une application pour gérer un type de fichier qu’elle n’est pas inscrite pour gérer. Cela se produit dans les circonstances suivantes :

  • Une application appelle explicitement SHAddToRecentDocs avec un type de fichier qu’elle n’est pas inscrite à gérer. Cela s’applique également aux appels effectués à SHAddToRecentDocs par la boîte de dialogue de fichier commune pour le compte de l’application, mais uniquement lorsque la boîte de dialogue est utilisée pour ouvrir un fichier, et non lorsqu’elle est utilisée pour en enregistrer un.
  • L’utilisateur supprime un fichier d’un type que l’application n’est pas inscrite à gérer sur le bouton de la barre des tâches de l’application.
Cette inscription est effectuée par utilisateur.

Un ensemble de conditions doit être respecté pour que l’inscription soit effectuée avec succès :

  • L’application doit être inscrite sous HKEY_CLASSES_ROOT\Applications.
  • Cette inscription ne peut pas inclure la valeur NoOpenWith. Pour plus d’informations sur NoOpenWith, consultez Types de fichiers.
  • Cette inscription ne peut pas fournir de données sous une sous-clé SupportedTypes . Pour plus d’informations sur la sous-clé SupportedTypes, consultez Types de fichiers.
  • Le fichier exécutable de l’application ne peut pas être répertorié dans la valeur KillList trouvée ici :
    HKEY_LOCAL_MACHINE
       Software
          Microsoft
             Windows
                CurrentVersion
                   Explorer
                      FileAssociation
                         KillList
    Note Les applications tierces ne doivent pas modifier la valeur KillList. Il doit être considéré comme en lecture seule.
     
  • L’inscription HKEY_CLASSES_ROOT\Applications de l’application doit avoir un ensemble de verbes par défaut définis sous un HKEY_CLASSES_ROOT\Applications\ExampleApp.exesous-clé \shell .

    Si SHAddToRecentDocs tente l’inscription à la suite d’un glisser-déplacer sur le bouton de la barre des tâches, la sous-clé de l’interpréteur de commandes est créée si elle n’existe pas déjà, tant que l’inscription existante de l’application ne contient pas de valeur NoOpenWith et que l’exécutable de l’application n’est pas répertorié dans la valeur KillList.

Suppression des appels à SHAddToRecentDocs

Dans les versions de Windows antérieures à Windows 7, un type de fichier peut définir l’indicateur FTA_NoRecentDocs pour empêcher l’ajout de ce type de fichier au dossier Récent . Ce mécanisme est également pris en charge sous Windows 7 et versions ultérieures. Pour plus d’informations, consultez Types de fichiers.

SHAddToRecentDocs suit les statistiques d’utilisation des documents via les verbes appelés pour accéder à ces documents. Les verbes fournis par les gestionnaires IContextMenu inscrits sont suivis, ces éléments s’affichent dans Mes documents récents (Windows XP) et Éléments récents (Windows Vista). Dans Windows 7, les dossiers parents des documents s’affichent dans la liste de raccourcis pour le bouton de barre des tâches Windows Explorer. Toutefois, les documents accessibles via ces verbes IContextMenu n’apparaissent pas dans l’application Jump Listes. Pour que ces éléments apparaissent dans la liste de raccourcis d’une application, une application doit appeler SHAddToRecentDocs explicitement.

Avant Windows 7, seul le open verbe entrait un appel à SHAddToRecentDocs. Dans Windows 7 et versions ultérieures, d’autres verbes peuvent également générer des statistiques d’utilisation. Ces informations sont utilisées pour rendre les destinations d’une liste de raccourcis plus complètes et plus précises.

Toutefois, certaines classes d’inscriptions d’association de types de fichiers ou des implémentations IContextMenu individuelles ne sont pas appropriées pour ce type de suivi. Le point de suivi de l’utilisation consiste à générer une liste d’éléments auxquels l’utilisateur est susceptible de vouloir à nouveau accéder. Si un verbe particulier (deletepour instance) est appelé par nature sur un élément auquel l’utilisateur n’aura plus accès, ou s’il s’agit d’une action secondaire telle qu’une analyse antivirus sur un fichier, ce verbe n’est pas approprié pour le suivi. Les classes de type de fichier doivent se supprimer de ce suivi via l’entrée de Registre NoRecentDocs. NoRecentDocs est de type REG_SZ et n’a aucune donnée associée. Sa présence est tout ce qui est nécessaire pour empêcher l’appel à SHAddToRecentDocs.

Par exemple, les extensions de menu contextuel et les verbes statiques inscrits sous HKEY_CLASSES_ROOT dans des classes telles que « * », « AllFileSystemObjects » ou « Dossier » ne doivent pas être suivis. Dans de tels cas, l’entrée NoRecentDocs est ajoutée à la racine de la clé de classe, comme illustré ici, pour supprimer le suivi des documents lancés via n’importe quel verbe ou extension inscrit à cette classe :

HKEY_CLASSES_ROOT
   AllFileSystemObjects
      NoRecentDocs

L’entrée NoRecentDocs est affectée par défaut aux *sous-clés de classe , AllFileSystemObjects, Folder, Directory et DesktopBackground .

Les implémentations IContextMenu individuelles peuvent refuser le suivi en ajoutant une sous-clé NoRecentDocs à l’inscription de son objet COM (Component Object Model), dans sa sous-clé shellex , comme illustré ici :

HKEY_CLASSES_ROOT
   CLSID
      {093C7AAB-5E72-454f-A91D-CA1BC991FCEC}
         shellex
            NoRecentDocs

Cette sous-clé n’est pas présente par défaut sur une implémentation IContextMenu .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête shlobj_core.h (inclure Shlobj.h)
Bibliothèque Shell32.lib
DLL Shell32.dll (version 4.0 ou ultérieure)
Ensemble d’API ext-ms-win-shell-shell32-l1-2-2 (introduit dans Windows 10, version 10.0.14393)

Voir aussi

SHGetFolderLocation

SHGetFolderPath