Compartilhar via


RegistryNotifyWindow

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função registra um temporário solicitação notificação de alteração. A janela especificada recebe uma notificação quando um alterado valor especificado.

Syntax

HRESULT WINAPI RegistryNotifyWindow( 
  HKEY hKey,
  LPCTSTR pszSubKey,
  LPCTSTR pszValueName,
  HWND hWnd,
  UINT msg,
  DWORD dwUserData,
  NOTIFICATIONCONDITION* pCondition,
  HREGNOTIFY* phNotify
);

Parameters

  • hKey
    [no] Identificador para o aberto chave ou um valor predefinido raiz.
  • pszSubKey
    [no] Chave onde o valor é armazenado. Se esse valor é NULL, em seguida, pszValueName é considerado em HKEY.
  • pszValueName
    [no] Nome valor no qual a notificação se baseia. Se o valor for NULL, o notificação de alteração será baseada no valor de usar como padrão.
  • hWnd
    [no] Identificador para a janela recebendo a mensagem.
  • msg
    [no] Mensagem passada para a janela.
  • dwUserData
    [no] Dados do Usuário passados voltar para a janela com a notificação.
  • pCondition
    [no] Condição que determina quando enviar a notificação. Quando a comparação entre pCondition o novo valor do Registro é TRUE e uma notificação será enviada.

    Se pCondition é NULL, e qualquer alteração nos resultados da valor do Registro especificado em uma notificação.

  • phNotify
    [out] Identificador que recebe a notificação. Esse identificador deve ser fechado usando RegistryCloseNotification Quando as notificações não são mais necessários. Redefinir o dispositivo também pára a notificação.

Return Value

A seguinte tabela mostra os valores de retorno para esta função.

Valor Descrição

S_OK

A solicitação de notificação de alteração é registrado.

E_INVALIDARG

Inválido hKey, phNotify, Ou hWnd.

Um valor de erro retornado.

Valor de erro ajustada como um FACILITY_WIN32 HRESULT.

Remarks

Êxito indica que o chamador será notificado cada tempo que Alterações de valor especificado e a condição especificada forem verdadeiras. Falha não causar qualquer alteração.

Para um cliente para diferenciar entre múltiplo notificações, o msg parâmetro deve ser exclusivo para cada chamar para RegistryNotifyWindow feitas por um cliente.

Para parar notificação e para fechar o identificador notificação, o chamador deve chamar RegistryCloseNotification. No entanto, esse tipo de notificação é temporário. Redefinir o dispositivo pára a notificação.

Quando pszValueName Altera, PostMessage Notifica o cliente. Se PostMessage falhar ou se hWnd é não mais válido, a solicitação notificação registrado é removida e phNotify identificador é fechado. A seguinte tabela mostra os parâmetros passados para PostMessage.

Nomes de variáveis Descrição

WPARAM

Para tipo de dados REG_DWORD, o novo valor (ou zero se o valor foi excluído) e zero (0) para todos os outros tipos dados.

LPARAM

Valor passado dwUserData.

Se o valor não existir quando RegistryNotifyWindow for chamado, o cliente será notificado quando o valor é adicionado.

Esta função pode ser usada para monitor qualquer chave Registro no sistema. O snapi.h arquivo de cabeçalho contém definições para as chaves Registro, caminhos, valores e bitmasks para todas as notificações de de base que são fornecidas pelo sistema.

Se a chave especificada por hKey e pszSubKey Não existe, em seguida, hKey é monitorado até pszSubKey é criado, após o qual pszSubKey é monitorado e muda para a chave será notificações disparador conforme solicitado. Para minimizar a degradação desempenho possível proveniente de uma nuimber grande de subchaves que está sendo monitorado, ele é uma recomendação para transmitir (como hKey) o identificador para uma chave que é como fechar possíveis para pszSubKey Em vez de passar uma chave raiz. De exemplo, se o cliente é um jogo e ele for monitoração a chave estrutura HKEY_CURRENT_USER\... \MyCoolGame\Player1 e o jogo posteriormente criaria HKEY_CURRENT_USER\... \MyCoolGame\Player2, duas maneiras possíveis para notificação abordagem das alterações feitas a chave Player2 incluem:

Diminuição no desempenho em potencial Menos problemas potenciais

hKey = identificador para HKEY_CURRENT_USER epszSubKey= o caminho completo para Player2

hKey = identificador para HKEY_CURRENT_USER\... \MyCoolGame\ epszSubKey=Player2

Exemplo de código

O seguinte exemplo de código demonstra como usar RegistryNotifyWindow.

Observação

Para fazer o seguinte exemplo de código mais fácil de ler, verificação de segurança e manipulação de erro não estão incluídos.Esta exemplo de código não deve ser usado em uma configuração versão a menos que ele foi modificado para incluí-las.

// Register to be notified when the next Appointment location changes, 
// and contains the string "Downtown".
LRESULT RegistryNotifyWindowProc(HWND hDlg, UINT msg, UINT wParam, LONG lParam)
{
    TCHAR szLocation[256];
    NOTIFICATIONCONDITION nc;
    LRESULT lRet       = FALSE;
    HREGNOTIFY hNotify = NULL;
    TCHAR szDowntown[] = TEXT("Downtown");
    switch (msg)
    {
        case WM_CREATE:
            // Initialize the notification structure 
            // Note that StatStor is not case sensitive.
            nc.ctComparisonType = REG_CT_CONTAINS;
            nc.TargetValue.psz = szDowntown;
            // A value of zero indicates a string comparison.
            nc.dwMask = 0;
            RegistryNotifyWindow(SN_CALENDARNEXTAPPOINTMENTLOCATION_ROOT, 
                                 SN_CALENDARNEXTAPPOINTMENTLOCATION_PATH, 
                                 SN_CALENDARNEXTAPPOINTMENTLOCATION_VALUE, 
                                 hDlg, 
                                 WM_USER, 
                                 0, 
                                 &nc, 
                                 &hNotify);
            lRet = 0;
            break;
        case WM_USER:
            // You can read the full location with the RegistryGetString function.
            RegistryGetString(SN_CALENDARNEXTAPPOINTMENTLOCATION_ROOT,
                              SN_CALENDARNEXTAPPOINTMENTLOCATION_PATH,
                              SN_CALENDARNEXTAPPOINTMENTLOCATION_VALUE,
                              szLocation, 
                              256);
            // Add your own processing statements here.
            lRet = TRUE;
            break;
        case WM_DESTROY:
            RegistryCloseNotification(hNotify);
            lRet = 0;
            break;
        // Add your own statements for handling other messages, here.

    return lRet;

Requirements

Header regext.h
Library aygshell.lib
Windows Embedded CE Windows Embedded CE 6.0 and later
Windows Mobile Pocket PC for Windows Mobile Version 5.0 and later, Smartphone for Windows Mobile Version 5.0 and later

See Also

Reference

RegistryBatchNotification
State and Notifications Broker Functions
State and Notifications Broker Reference

Concepts

Using the State and Notifications Broker in Native Code

Other Resources

State and Notifications Broker