Función SHAddToRecentDocs (shlobj_core.h)

Notifica al sistema a que se ha accedido a un elemento, con el fin de realizar un seguimiento de esos elementos usados más recientemente y con más frecuencia. Esta función también se puede usar para borrar todos los datos de uso.

Sintaxis

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

Parámetros

uFlags

Tipo: UINT

Valor de la enumeración SHARD que indica la forma de la información a la que apunta el parámetro pv .

[in, optional] pv

Tipo: LPCVOID

Puntero a los datos que identifica el elemento al que se ha accedido. El elemento se puede especificar en este parámetro en una de las formas siguientes:

Establezca este parámetro en NULL para borrar todos los datos de uso de todos los elementos.

Valor devuelto

None

Observaciones

Las estadísticas de uso recopiladas a través de llamadas a este método se usan para determinar las listas de elementos a los que se ha accedido más recientemente y con más frecuencia. Estas listas se ven en el menú Inicio y, en Windows 7 y versiones posteriores, en la Jump List de una aplicación.

Cuando se llama a este método, afecta a las siguientes áreas:

  • Novedades las listas recientes y frecuentes de la lista de accesos directos de la aplicación asociada.
  • Agrega un acceso directo a la carpeta Recent del usuario (FOLDERID_Recent, CSIDL_RECENT). Esto se refleja en el menú Mis documentos recientes (Windows XP) y Elementos recientes (Windows Vista y versiones posteriores) en el menú Inicio .
  • Agrega un acceso directo al submenú Documentos del menú Inicio clásico. (Tenga en cuenta que la opción de menú Inicio clásico no está disponible en Windows 7 y versiones posteriores).
Los elementos representados por un IShellLink no se agregan a la carpeta Recent , aunque se reflejan en la lista de accesos directos de una aplicación.

En algunos casos, especialmente cuando un usuario abre un elemento a través del Explorador de Windows o usa el cuadro de diálogo de archivo común para abrir, guardar o crear un archivo, el Shell llama a SHAddToRecentDocs en nombre de la aplicación. Una aplicación que tenga una interfaz de usuario personalizada para seleccionar elementos debe llamar a SHAddToRecentDocs explícitamente para garantizar estadísticas precisas. El sistema tiene en cuenta las llamadas duplicadas, por lo que no existe ningún riesgo de que los datos se esquejen.

Los archivos ejecutables (.exe) se filtran de la lista de documentos usados recientemente en Windows XP y versiones posteriores. Aunque SHAddToRecentDocs aceptará la ruta de acceso de un archivo ejecutable, ese archivo no aparecerá en la lista Elementos recientes .

ShAddToRecentDocs también acepta carpetas, pero solo aparecen en la lista de accesos directos para el botón de la barra de tareas del Explorador de Windows. Las carpetas no aparecen en la lista de saltos de ninguna otra aplicación.

En ciertos casos, SHAddToRecentDocs intenta registrar una aplicación para controlar un tipo de archivo que no está registrado para controlar. Esto ocurre en estas circunstancias:

  • Una aplicación llama explícitamente a SHAddToRecentDocs con un tipo de archivo que no está registrado para controlar. Esto también se aplica a las llamadas realizadas a SHAddToRecentDocs por el cuadro de diálogo de archivo común en nombre de la aplicación, pero solo cuando se usa el cuadro de diálogo para abrir un archivo, no cuando se usa para guardar uno.
  • El usuario quita un archivo de un tipo que la aplicación no está registrada para controlar en el botón de la barra de tareas de la aplicación.
Este registro se realiza por usuario.

Se debe cumplir un conjunto de requisitos para que el registro se realice correctamente:

  • La aplicación debe estar registrada en HKEY_CLASSES_ROOT\Applications.
  • Ese registro no puede incluir el valor NoOpenWith. Consulte Tipos de archivo para obtener más detalles sobre NoOpenWith.
  • Ese registro no puede proporcionar datos en una subclave SupportedTypes . Consulte Tipos de archivo para obtener más información sobre la subclave SupportedTypes .
  • El archivo ejecutable de la aplicación no se puede enumerar en el valor KillList que se encuentra aquí:
    HKEY_LOCAL_MACHINE
       Software
          Microsoft
             Windows
                CurrentVersion
                   Explorer
                      FileAssociation
                         KillList
    Nota Las aplicaciones de terceros no deben modificar el valor KillList. Debe considerarse de solo lectura.
     
  • El registro de HKEY_CLASSES_ROOT\Aplicaciones de la aplicación debe tener un conjunto de verbos predeterminados definidos en . HKEY_CLASSES_ROOT\Applications\ExampleApp.exesubclave \shell .

    Si SHAddToRecentDocs está intentando el registro como resultado de una operación de arrastrar y colocar en el botón de la barra de tareas, la subclave del shell se crea si aún no existe, siempre y cuando el registro de aplicación existente no contenga un valor NoOpenWith y el ejecutable de la aplicación no aparece en el valor KillList.

Suprimir llamadas a SHAddToRecentDocs

En versiones de Windows anteriores a Windows 7, un tipo de archivo podría establecer la marca FTA_NoRecentDocs para evitar que ese tipo de archivo se agregue a la carpeta Recent . Este mecanismo también se admite en Windows 7 y versiones posteriores. Consulte Tipos de archivo para obtener más información.

SHAddToRecentDocs realiza un seguimiento de las estadísticas de uso de documentos a través de los verbos que se invocan para acceder a esos documentos. Se realiza un seguimiento de los verbos proporcionados por los controladores IContextMenu registrados, que aparecen en Mis documentos recientes (Windows XP) y Elementos recientes (Windows Vista). En Windows 7, las carpetas primarias de los documentos aparecen en el jump List para el botón de la barra de tareas del Explorador de Windows. Sin embargo, los documentos a los que se accede a través de esos verbos IContextMenu no aparecen en la aplicación Jump Listas. Para que esos elementos aparezcan en la lista de accesos directos de una aplicación, una aplicación debe llamar explícitamente a SHAddToRecentDocs .

Antes de Windows 7, solo el open verbo dio lugar a una llamada a SHAddToRecentDocs. En Windows 7 y versiones posteriores, otros verbos también pueden generar estadísticas de uso. Esta información se usa para hacer que los destinos de una lista de accesos directos sean más completos y precisos.

Sin embargo, algunas clases de registros de asociación de tipo de archivo o implementaciones IContextMenu individuales no son adecuadas para este tipo de seguimiento. El seguimiento del punto de uso es generar una lista de elementos a los que es probable que el usuario quiera acceder de nuevo. Si un verbo determinado (deletepor ejemplo) se invoca inherentemente en un elemento al que el usuario no tendrá acceso de nuevo o es una acción secundaria, como un examen de virus en un archivo, ese verbo no es adecuado para el seguimiento. Las clases de tipo de archivo deben quitarse de este seguimiento a través de la entrada del Registro NoRecentDocs. NoRecentDocs es de tipo REG_SZ y no tiene datos asociados. Su presencia es todo lo necesario para evitar la llamada a SHAddToRecentDocs.

Por ejemplo, no se debe realizar un seguimiento de las extensiones de menú contextual y los verbos estáticos registrados en HKEY_CLASSES_ROOT en clases como "*", "AllFileSystemObjects" o "Folder". En casos como estos, la entrada NoRecentDocs se agrega a la raíz de la clave de clase, como se muestra aquí para suprimir el seguimiento de documentos iniciados a través de cualquier verbo o extensión registrado en esa clase:

HKEY_CLASSES_ROOT
   AllFileSystemObjects
      NoRecentDocs

La entrada NoRecentDocs se asigna de forma predeterminada a las *subclaves de clase , AllFileSystemObjects, Folder, Directory y DesktopBackground .

Las implementaciones individuales de IContextMenu pueden no participar en el seguimiento agregando una subclave NoRecentDocs al registro del objeto Component Object Model (COM), en su subclave shellex , como se muestra aquí:

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

Esta subclave no está presente de forma predeterminada en ninguna implementación de IContextMenu .

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shlobj_core.h (incluya Shlobj.h)
Library Shell32.lib
Archivo DLL Shell32.dll (versión 4.0 o posterior)
Conjunto de API ext-ms-win-shell-shell32-l1-2-2 (introducido en Windows 10, versión 10.0.14393)

Consulte también

SHGetFolderLocation

SHGetFolderPath