Partager via


Fonction SHChangeNotifyRegister (shlobj_core.h)

Inscrit une fenêtre pour recevoir des notifications du système de fichiers ou de l’interpréteur de commandes, si le système de fichiers prend en charge les notifications.

Syntaxe

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

Paramètres

[in] hwnd

Type : HWND

Handle de la fenêtre qui reçoit les messages de modification ou de notification.

fSources

Type : int

Une ou plusieurs des valeurs suivantes qui indiquent le type d’événements pour lesquels recevoir des notifications.

Note Dans les versions antérieures du Kit de développement logiciel (SDK), ces indicateurs ne sont pas définis dans un fichier d’en-tête et les implémenteurs doivent définir ces valeurs eux-mêmes ou utiliser leurs valeurs numériques directement. À partir de Windows Vista, ces indicateurs sont définis dans Shlobj.h.
 

SHCNRF_InterruptLevel (0x0001)

Interruption des notifications de niveau à partir du système de fichiers.

SHCNRF_ShellLevel (0x0002)

Notifications au niveau de l’interpréteur de commandes à partir de l’interpréteur de commandes.

SHCNRF_RecursiveInterrupt (0x1000)

Interrompez les événements sur l’ensemble de la sous-arborescence. Cet indicateur doit être combiné avec l’indicateur SHCNRF_InterruptLevel . Lorsque vous utilisez cet indicateur, les notifications doivent également être rendues récursives en définissant le membre fRecursive de la structure SHChangeNotifyEntry correspondante référencée par pshcne sur TRUE. L’utilisation de SHCNRF_RecursiveInterrupt sur une vue à un seul niveau (par exemple, un code PIDL qui est relatif et ne contient qu’un seul SHITEMID) bloque la notification d’événements au niveau le plus élevé et empêche ainsi une mise à jour enfant récursive. Ainsi, une icône déplacée vers le niveau le plus bas d’une hiérarchie de dossiers peut ne pas apparaître dans la vue comme prévu.

SHCNRF_NewDelivery (0x8000)

Les messages reçus utilisent la mémoire partagée. Appelez SHChangeNotification_Lock pour accéder aux données réelles. Appelez SHChangeNotification_Unlock pour libérer la mémoire lorsque vous avez terminé.

Note Nous recommandons cet indicateur, car il fournit une méthode de remise plus robuste. Tous les clients doivent spécifier cet indicateur.
 

fEvents

Type : LONG

Événements de notification de modification pour lesquels recevoir une notification. Pour connaître les valeurs possibles, consultez les indicateurs SHCNE répertoriés dans SHChangeNotify .

wMsg

Type : UINT

Message à publier dans la procédure de fenêtre.

cEntries

Type : int

Nombre d’entrées dans le tableau pshcne .

[in] pshcne

Type : const SHChangeNotifyEntry*

Tableau de structures SHChangeNotifyEntry qui contiennent les notifications. Ce tableau doit toujours être défini sur un lorsque l’appel de SHChangeNotifyRegister ou SHChangeNotifyDeregister ne fonctionne pas correctement.

Valeur retournée

Type : ULONG

Retourne un ID d’inscription d’entier positif. Retourne 0 si la mémoire est insuffisante ou en réponse à des paramètres non valides.

Remarques

Consultez l’exemple Change Notify Watcher dans le Kit de développement logiciel (SDK) Windows pour obtenir un exemple complet illustrant l’utilisation de cette fonction.

Lorsqu’un événement de notification de modification est déclenché, le message indiqué par wMsg est remis à la fenêtre spécifiée par le paramètre hwnd .

  • Si SHCNRF_NewDelivery est spécifié, les valeurs wParam et lParam du message doivent être passées à SHChangeNotification_Lock en tant que paramètres hChange et dwProcID respectivement.
  • Si SHCNRF_NewDelivery n’est pas spécifié, wParam est un pointeur vers deux pointeurs PIDLIST_ABSOLUTE, et lParam spécifie l’événement. Les deux pointeurs PIDLIST_ABSOLUTE peuvent avoir la valeur NULL, en fonction de l’événement envoyé.
Lorsqu’un événement de système de fichiers approprié se produit et que le paramètre hwnd n’a pas la valeur NULL, le message indiqué par wMsg est publié dans la fenêtre spécifiée. Sinon, si le paramètre pshcne n’est pas NULL, cette entrée de notification est utilisée.

Pour des raisons de performances, plusieurs notifications peuvent être combinées en une seule notification. Par exemple, si un grand nombre de notifications SHCNE_UPDATEITEM sont générées pour les fichiers du même dossier, elles peuvent être jointes en une seule notification SHCNE_UPDATEDIR .

La fonction NTSHChangeNotifyRegister , qui n’est plus disponible à partir de Windows Vista, était équivalente à SHChangeNotifyRegister avec l’indicateur SHCNRF_NewDelivery.

Configuration requise

   
Client minimal pris en charge Windows 2000 Professionnel [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 5.0 ou ultérieure)
Ensemble d’API ext-ms-win-shell-shell32-l1-2-1 (introduit dans Windows 10, version 10.0.10240)