Share via


Função SHChangeNotifyRegister (shlobj_core.h)

Registra uma janela para receber notificações do sistema de arquivos ou do Shell, se o sistema de arquivos der suporte a notificações.

Sintaxe

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

Parâmetros

[in] hwnd

Digite: HWND

Um identificador para a janela que recebe as mensagens de alteração ou notificação.

fSources

Tipo: int

Um ou mais dos valores a seguir que indicam o tipo de eventos para os quais receber notificações.

Nota Em versões anteriores do SDK, esses sinalizadores não são definidos em um arquivo de cabeçalho e os implementadores devem definir esses valores por conta própria ou usar seus valores numéricos diretamente. A partir do Windows Vista, esses sinalizadores são definidos em Shlobj.h.
 

SHCNRF_InterruptLevel (0x0001)

Notificações de nível de interrupção do sistema de arquivos.

SHCNRF_ShellLevel (0x0002)

Notificações no nível do shell.

SHCNRF_RecursiveInterrupt (0x1000)

Interromper eventos em toda a subárvore. Esse sinalizador deve ser combinado com o sinalizador SHCNRF_InterruptLevel . Ao usar esse sinalizador, as notificações também devem ser recursivas definindo o membro fRecursive da estrutura SHChangeNotifyEntry correspondente referenciada por pshcne como TRUE. O uso de SHCNRF_RecursiveInterrupt em uma exibição de nível único, por exemplo, um PIDL relativo e que contém apenas um SHITEMID, bloqueará a notificação de evento no nível mais alto e, assim, impedirá uma atualização filho recursiva. Portanto, um ícone arrastado para o nível mais baixo de uma hierarquia de pastas pode não aparecer na exibição conforme o esperado.

SHCNRF_NewDelivery (0x8000)

As mensagens recebidas usam memória compartilhada. Chame SHChangeNotification_Lock para acessar os dados reais. Chame SHChangeNotification_Unlock para liberar a memória quando terminar.

Nota Recomendamos esse sinalizador porque ele fornece um método de entrega mais robusto. Todos os clientes devem especificar esse sinalizador.
 

fEvents

Tipo: LONG

Altere os eventos de notificação para os quais receber a notificação. Consulte os sinalizadores SHCNE listados em SHChangeNotify para obter valores possíveis.

wMsg

Tipo: UINT

Mensagem a ser postada no procedimento de janela.

cEntries

Tipo: int

Número de entradas na matriz pshcne .

[in] pshcne

Tipo: const SHChangeNotifyEntry*

Matriz de estruturas SHChangeNotifyEntry que contêm as notificações. Essa matriz sempre deve ser definida como uma ao chamar SHChangeNotifyRegister ou SHChangeNotifyDeregister não funcionará corretamente.

Valor retornado

Tipo: ULONG

Retorna uma ID de registro de inteiro positivo. Retorna 0 se estiver sem memória ou em resposta a parâmetros inválidos.

Comentários

Consulte o Exemplo do Inspetor de Notificação de Alterações no SDK (Software Development Kit) do Windows para obter um exemplo completo que demonstre o uso dessa função.

Quando um evento de notificação de alteração é gerado, a mensagem indicada pelo wMsg é entregue à janela especificada pelo parâmetro hwnd .

  • Se SHCNRF_NewDelivery for especificado, os valores wParam e lParam na mensagem deverão ser passados para SHChangeNotification_Lock como os parâmetros hChange e dwProcID , respectivamente.
  • Se SHCNRF_NewDelivery não for especificado, wParam será um ponteiro para dois ponteiros PIDLIST_ABSOLUTE e lParam especificará o evento. Os dois ponteiros PIDLIST_ABSOLUTE podem ser NULL, dependendo do evento que está sendo enviado.
Quando um evento relevante do sistema de arquivos ocorre e o parâmetro hwnd não é NULL, a mensagem indicada por wMsg é postada na janela especificada. Caso contrário, se o parâmetro pshcne não for NULL, essa entrada de notificação será usada.

Por motivos de desempenho, várias notificações podem ser combinadas em uma única notificação. Por exemplo, se um grande número de SHCNE_UPDATEITEM notificações forem geradas para arquivos na mesma pasta, elas poderão ser unidas em uma única notificação de SHCNE_UPDATEDIR .

A função NTSHChangeNotifyRegister , que não está mais disponível a partir do Windows Vista, era equivalente a SHChangeNotifyRegister com o sinalizador SHCNRF_NewDelivery.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho shlobj_core.h (inclua Shlobj.h)
Biblioteca Shell32.lib
DLL Shell32.dll (versão 5.0 ou posterior)
Conjunto de APIs ext-ms-win-shell32-l1-2-1 (introduzido no Windows 10, versão 10.0.10240)