Funzione SHChangeNotifyRegister (shlobj_core.h)

Registra una finestra per ricevere notifiche dal file system o dalla shell, se il file system supporta le notifiche.

Sintassi

ULONG SHChangeNotifyRegister(
  [in] HWND                      hwnd,
       int                       fSources,
       LONG                      fEvents,
       UINT                      wMsg,
       int                       cEntries,
  [in] const SHChangeNotifyEntry *pshcne
);

Parametri

[in] hwnd

Tipo: HWND

Handle per la finestra che riceve i messaggi di modifica o notifica.

fSources

Tipo: int

Uno o più dei valori seguenti che indicano il tipo di eventi per cui ricevere le notifiche.

Nota Nelle versioni precedenti dell'SDK, questi flag non sono definiti in un file di intestazione e gli implementatori devono definire questi valori stessi o usare direttamente i valori numerici. A partire da Windows Vista, questi flag sono definiti in Shlobj.h.
 

SHCNRF_InterruptLevel (0x0001)

Interrompere le notifiche a livello di file system.

SHCNRF_ShellLevel (0x0002)

Notifiche a livello di shell dalla shell.

SHCNRF_RecursiveInterrupt (0x1000)

Interrompere gli eventi sull'intero sottoalbero. Questo flag deve essere combinato con il flag SHCNRF_InterruptLevel . Quando si usa questo flag, le notifiche devono anche essere rese ricorsive impostando il membro fRecursive della struttura SHChangeNotifyEntry corrispondente a cui fa riferimento pshcne su TRUE. L'uso di SHCNRF_RecursiveInterrupt in una visualizzazione a livello singolo, ad esempio un PIDL relativo e contiene un solo SHITEMID, blocca la notifica degli eventi al livello più alto e impedisce quindi un aggiornamento ricorsivo e figlio. Di conseguenza, un'icona trascinata nel livello più basso di una gerarchia di cartelle potrebbe non essere visualizzata nella visualizzazione come previsto.

SHCNRF_NewDelivery (0x8000)

I messaggi ricevuti usano la memoria condivisa. Chiamare SHChangeNotification_Lock per accedere ai dati effettivi. Chiamare SHChangeNotification_Unlock per rilasciare la memoria al termine.

Nota È consigliabile questo flag perché fornisce un metodo di recapito più affidabile. Tutti i client devono specificare questo flag.
 

fEvents

Tipo: LONG

Modificare gli eventi di notifica per i quali ricevere la notifica. Per i valori possibili, vedere i flag SHCNE elencati in SHChangeNotify .

wMsg

Tipo: UINT

Messaggio da inserire nella routine della finestra.

cEntries

Tipo: int

Numero di voci nella matrice pshcne .

[in] pshcne

Tipo: const SHChangeNotifyEntry*

Matrice di strutture SHChangeNotifyEntry che contengono le notifiche. Questa matrice deve essere sempre impostata su una quando si chiama SHChangeNotifyRegister o SHChangeNotifyDeregister non funzionerà correttamente.

Valore restituito

Tipo: ULONG

Restituisce un ID di registrazione integer positivo. Restituisce 0 se memoria insufficiente o in risposta a parametri non validi.

Commenti

Vedere l'esempio Change Notify Watcher in Windows Software Development Kit (SDK) per un esempio completo che illustra l'uso di questa funzione.

Quando viene generato un evento di notifica delle modifiche, il messaggio indicato da wMsg viene recapitato alla finestra specificata dal parametro hwnd .

  • Se viene specificato SHCNRF_NewDelivery, i valori wParam e lParam nel messaggio devono essere passati rispettivamente a SHChangeNotification_Lock come parametri hChange e dwProcID .
  • Se non viene specificato SHCNRF_NewDelivery, wParam è un puntatore a due puntatori PIDLIST_ABSOLUTE e lParam specifica l'evento. I due puntatori PIDLIST_ABSOLUTE possono essere NULL, a seconda dell'evento inviato.
Quando si verifica un evento del file system pertinente e il parametro hwnd non è NULL, il messaggio indicato da wMsg viene inviato alla finestra specificata. In caso contrario, se il parametro pshcne non è NULL, viene usata tale voce di notifica.

Per motivi di prestazioni, è possibile combinare più notifiche in una singola notifica. Ad esempio, se viene generato un numero elevato di notifiche di SHCNE_UPDATEITEM per i file nella stessa cartella, possono essere aggiunti a una singola notifica di SHCNE_UPDATEDIR .

La funzione NTSHChangeNotifyRegister , che non è più disponibile a partire da Windows Vista, equivale a SHChangeNotifyRegister con il flag SHCNRF_NewDelivery.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shlobj_core.h (includere Shlobj.h)
Libreria Shell32.lib
DLL Shell32.dll (versione 5.0 o successiva)
Set di API ext-ms-win-shell-shell32-l1-2-1 (introdotto in Windows 10, versione 10.0.10240)