Compartilhar via


RegistryNotifyApp

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função registra uma solicitação para notificações alteração persistente. O aplicativo especificado recebe uma notificação quando altera o valor especificado.

Syntax

HRESULT WINAPI RegistryNotifyApp( 
  HKEY hKey,
  LPCTSTR pszSubKey,
  LPCTSTR pszValueName,
  LPCTSTR pszName,
  LPCTSTR pszApp,
  LPCTSTR pszClass,
  LPCTSTR pszWindow,
  UINT msg,
  DWORD dwFlags,
  NOTIFICATIONCONDITION* pCondition
);

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.
  • pszName
    [no] Seqüência de caracteres definido pelo usuário exclusivo que representa a solicitação notificação. Você deve transmitir esta seqüência de caracteres para RegistryStopNotification Quando você desejar a notificação para parar. Esse nome é exclusivo para cada solicitação notificação. Para evitar conflitos entre aplicativos, você pode usar o seguinte formato: ApplicationName.EventName.
  • pszApp
    [no] Caminho para o arquivo executável para iniciar.
  • pszClass
    [no] Tipo de classe da janela que receberá a notificação.

    Se pszClass e pszWindow estão definidos para NULL, e a função será somente iniciar o arquivo executável.

  • pszWindow
    [no] Nome da janela que que vai receber a notificação.

    Se pszClass e pszWindow São NULL, e a função será somente iniciar o arquivo executável.

  • msg
    [no] Mensagem transmitida para a janela especificada por pszClass e pszWindow.
  • dwFlags
    [no] Sinalizadores de notificação.

    Este valor deve ser 0 ou RNAF_NONAMEONCMDLINE. Se o valor for 0,

    / Notificar "pszName"

    Serão acrescentados para o linha de comando quando o aplicativo é iniciado. Use RNAF_NONAMEONCMDLINE para suprimir acrescentando os parâmetros na linha de comando.

  • 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.

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_ALREADY_REGISTERED

Uma notificação com o mesmo nome passado pszName já existe .

E_INVALIDARG

Inválido hKey, pszApp, Ou pszName.

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 parar notificações, o chamador devem chamar RegistryStopNotification, caso contrário a solicitação notificação é permanente. Mesmo se o dispositivo estiver redefinir, a notificação permanecerá ativo até RegistryStopNotification é chamado.

Em notificação, RegistryNotifyApp Determina se o arquivo executável que está especificado em pszApp Já Está execução pesquisando a janela especificada na pszClass e pszWindow. Se não for o executável execução, a função inicia o executável. O comando passado para o arquivo executável deve ser especificado em pszApp seqüência de caracteres. Se o caminho para o arquivo executável no pszApp contiver espaços, o pszApp seqüência de caracteres devem incluir aspas o caminho inteiro.

TCHAR szApp[] = TEXT("\"\\Program Files\\myApp\\myApp.exe\"");

A mensagem especificada na msg está lançado para a janela pelo agente notificações, que usa PostMessage. 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

Zero (0)

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

O cliente recebe uma notificação quando os valores são adicionados ou quando os valores são alterados. Se um das seguinte condições existir quando chega a notificação, a notificação será removida:

  • O executável especificado em pszApp não pode ser iniciado.
  • A janela especificada na pszClass e pszWindow Não foi encontrado após o executável especificado em pszApp foi iniciado.
  • O PostMessage função falhar.

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 RegistryNotifyApp.

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.

HRESULT RegistryNotifyAppExample()
{
    NOTIFICATIONCONDITION nc;
    HRESULT hr = S_OK;
    // The notification name must be unique across the device.
    // It is considered good practice to prefix this name with the name of your application.
    TCHAR szNotificationName[] = TEXT("myAppCradled"); 
    TCHAR szAppName[]          = TEXT("myApp.exe param1 param2");
    // Receive notifications whenever the device is cradled.
    nc.ctComparisonType = REG_CT_EQUAL;
    nc.TargetValue.dw   = 1;
    // Since you are not masking, dwMask must be non-zero for dwords.
    nc.dwMask = 0xFFFFFFFF;  
    // The application is launched from the command line with: myApp.exe param1 param2 /notify "myAppCradled".
    hr = RegistryNotifyApp(SN_CRADLEPRESENT_ROOT, 
                           SN_CRADLEPRESENT_PATH, 
                           SN_CRADLEPRESENT_VALUE, 
                           szNotificationName, 
                           szAppName, 
                           NULL, 
                           NULL, 
                           0, 
                           0, 
                           &nc);
    // When you are done, call RegistryStopNotification to remove the notification.
    // hr = RegistryStopNotification(szNotificationName);
    return hr;
}

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

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