RegistryNotifyApp
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