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.
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.
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.
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) |
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per