Funzione SHAddToRecentDocs (shlobj_core.h)

Notifica al sistema che è stato eseguito l'accesso a un elemento, ai fini del rilevamento di tali elementi usati più di recente e più frequentemente. Questa funzione può essere usata anche per cancellare tutti i dati di utilizzo.

Sintassi

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

Parametri

uFlags

Tipo: UINT

Valore dell'enumerazione SHARD che indica la forma delle informazioni a cui punta il parametro pv .

[in, optional] pv

Tipo: LPCVOID

Puntatore ai dati che identificano l'elemento a cui è stato eseguito l'accesso. L'elemento può essere specificato in questo parametro in uno dei moduli seguenti:

Impostare questo parametro su NULL per cancellare tutti i dati di utilizzo in tutti gli elementi.

Valore restituito

nessuno

Osservazioni

Le statistiche di utilizzo raccolte tramite chiamate a questo metodo vengono usate per determinare elenchi di elementi a cui è stato eseguito l'accesso più recente e più frequente. Questi elenchi sono visualizzati nel menu Start e, in Windows 7 e versioni successive, in Un'applicazione Jump List.

Quando questo metodo viene chiamato, influisce sulle aree seguenti:

  • Aggiornamenti gli elenchi recenti e frequenti per l'elenco jump list dell'applicazione associata.
  • Aggiunge un collegamento alla cartella Recenti dell'utente (FOLDERID_Recent, CSIDL_RECENT). Questo si riflette nel menu Documenti recenti (Windows XP) e Elementi recenti (Windows Vista e versioni successive) nel menu Start .
  • Aggiunge un collegamento al sottomenu Documenti del menu Start classico. Si noti che l'opzione di menu Start classica non è disponibile in Windows 7 e versioni successive.
Gli elementi rappresentati da un IShellLink non vengono aggiunti alla cartella Recenti , anche se vengono riflesse nell'elenco jump di un'applicazione.

In alcuni casi, in particolare quando un utente apre un elemento tramite Esplora risorse o usa la finestra di dialogo file comune per aprire, salvare o creare un file, shell chiama SHAddToRecentDocs per conto dell'applicazione. Un'applicazione con un'interfaccia utente personalizzata per la selezione di elementi deve chiamare SHAddToRecentDocs in modo esplicito per garantire statistiche accurate. Le chiamate duplicate vengono accountate dal sistema in modo che non vi sia alcun rischio di asimmetria dei dati in questo modo.

I file eseguibili (.exe) vengono filtrati dall'elenco di documenti usati di recente in Windows XP e versioni successive. Sebbene SHAddToRecentDocs accetti il percorso di un file eseguibile, tale file non verrà visualizzato nell'elenco Elementi recenti .

Le cartelle vengono accettate anche da SHAddToRecentDocs, ma vengono visualizzate solo nel pulsante Jump List per la barra delle applicazioni di Esplora risorse di Windows. Le cartelle non vengono visualizzate nell'elenco jump list di un'altra applicazione.

In alcuni casi , SHAddToRecentDocs tenta di registrare un'applicazione per gestire un tipo di file che non è registrato per gestire. Ciò si verifica in queste circostanze:

  • Un'applicazione chiama in modo esplicito SHAddToRecentDocs con un tipo di file che non è registrato per gestire. Ciò si applica anche alle chiamate effettuate a SHAddToRecentDocs dalla finestra di dialogo file comune per conto dell'applicazione, ma solo quando il dialogo viene usato per aprire un file, non quando viene usato per salvarlo.
  • L'utente elimina un file di un tipo che l'applicazione non è registrata per gestire sul pulsante della barra delle applicazioni dell'applicazione.
Questa registrazione viene eseguita per utente.

Un set di requisiti deve essere soddisfatto per il completamento della registrazione:

  • L'applicazione deve essere registrata in HKEY_CLASSES_ROOT\Applications.
  • La registrazione non può includere il valore NoOpenWith. Per altre informazioni su NoOpenWith, vedere Tipi di file .
  • La registrazione non può fornire dati in una sottochiave SupportedTypes . Per altre informazioni sulla sottochiave SupportedTypes, vedere Tipi di file.
  • Impossibile elencare il file eseguibile dell'applicazione nel valore KillList qui:
    HKEY_LOCAL_MACHINE
       Software
          Microsoft
             Windows
                CurrentVersion
                   Explorer
                      FileAssociation
                         KillList
    Nota Le applicazioni di terze parti non devono modificare il valore KillList. Deve essere considerato di sola lettura.
     
  • La registrazione di HKEY_CLASSES_ROOT\Applications dell'applicazione deve avere un set di verbi predefiniti definiti in un HKEY_CLASSES_ROOT\Applications\ExampleApp.exe\shell sottochiave.

    Se SHAddToRecentDocs tenta la registrazione come risultato di un trascinamento della selezione sulla barra delle applicazioni, la sottochiave della shell viene creata se non esiste già, purché la registrazione dell'applicazione esistente non contenga un valore NoOpenWith e il file eseguibile dell'applicazione non è elencato nel valore KillList.

Eliminazione delle chiamate a SHAddToRecentDocs

Nelle versioni di Windows prima di Windows 7, un tipo di file potrebbe impostare il flag di FTA_NoRecentDocs per impedire l'aggiunta del tipo di file alla cartella Recenti . Questo meccanismo è supportato anche in Windows 7 e versioni successive. Per altre informazioni, vedere Tipi di file .

SHAddToRecentDocs tiene traccia delle statistiche di utilizzo dei documenti tramite i verbi richiamati per accedere a tali documenti. I verbi forniti dai gestori IContextMenu registrati vengono rilevati, tali elementi vengono visualizzati in Documenti recenti (Windows XP) e Elementi recenti (Windows Vista). In Windows 7 le cartelle padre dei documenti vengono visualizzate nel pulsante Jump List per la barra delle applicazioni di Esplora risorse. Tuttavia, i documenti a cui si accede tramite i verbi IContextMenu non vengono visualizzati nell'applicazione Jump Elenchi. Per visualizzare tali elementi nell'elenco jump list di un'applicazione, un'applicazione deve chiamare SHAddToRecentDocs in modo esplicito.

Prima di Windows 7, solo il open verbo ha generato una chiamata a SHAddToRecentDocs. In Windows 7 e versioni successive altri verbi possono anche generare statistiche di utilizzo. Queste informazioni vengono usate per rendere più complete e accurate le destinazioni di Jump List.

Tuttavia, alcune classi di registrazioni dell'associazione di tipi di file o singole implementazioni di IContextMenu non sono appropriate per questo tipo di rilevamento. Il punto di rilevamento dell'utilizzo consiste nel generare un elenco di elementi a cui è probabile che l'utente voglia accedere di nuovo. Se un verbo specifico,delete ad esempio, viene richiamato in modo intrinseco su un elemento a cui l'utente non accederà di nuovo o è un'azione secondaria, ad esempio un'analisi di virus su un file, tale verbo non è appropriato per il rilevamento. Le classi del tipo di file devono essere rimosse da questo rilevamento tramite la voce del Registro di sistema NoRecentDocs. NoRecentDocs è di tipo REG_SZ e non ha dati associati. La sua presenza è tutto ciò che è necessario per impedire la chiamata a SHAddToRecentDocs.

Ad esempio, le estensioni del menu di scelta rapida e i verbi statici registrati in HKEY_CLASSES_ROOT nelle classi come "*", "AllFileSystemObjects" o "Folder" non devono essere rilevate. In casi come questi, la voce NoRecentDocs viene aggiunta alla radice della chiave di classe, come illustrato qui per eliminare il rilevamento dei documenti avviati tramite qualsiasi verbo o estensione registrata a tale classe:

HKEY_CLASSES_ROOT
   AllFileSystemObjects
      NoRecentDocs

La voce NoRecentDocs viene assegnata per impostazione predefinita alla sottochiave , *AllFileSystemObjects, Folder, Directory e DesktopBackground.

Le singole implementazioni di IContextMenu possono rifiutare il rilevamento aggiungendo una sottochiave NoRecentDocs alla registrazione dell'oggetto Component Object Model (COM), nella sottochiave shellex , come illustrato di seguito:

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

Questa sottochiave non è presente per impostazione predefinita in qualsiasi implementazione di IContextMenu .

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shlobj_core.h (include Shlobj.h)
Libreria Shell32.lib
DLL Shell32.dll (versione 4.0 o successiva)
Set di API ext-ms-win-shell32-l1-2-2 (introdotta in Windows 10 versione 10.0.14393)

Vedi anche

SHGetFolderLocation

Shgetfolderpath