Facilidade de acesso ao registro de tecnologia assistencial
Este artigo explica como registrar um aplicativo de acessibilidade com a Central de Facilidade de Acesso. Ele também explica como adaptar seu aplicativo de acessibilidade para que ele funcione bem com a área de trabalho segura.
A Central de Facilidade de Acesso é um aplicativo do Painel de Controle para Microsoft Windows que reúne funcionalidades para acessibilidade e facilidade de uso. Usando a Central de Facilidade de Acesso, os usuários podem configurar seus computadores para atender às suas necessidades físicas e cognitivas.
Uma função da Central de Facilidade de Acesso é ajudar os usuários a iniciar aplicativos de acessibilidade, incluindo Narrador, Teclado Na Tela e Lupa. Aplicativos de terceiros registrados também aparecem no Centro de Facilidade de Acesso e podem ser iniciados diretamente a partir daí.
Os aplicativos de acessibilidade precisam funcionar sem problemas com a área de trabalho segura. A área de trabalho segura é a interface do usuário que aparece quando o computador está bloqueado (no logon ou quando o usuário bloqueou a área de trabalho) e quando o usuário é solicitado a permitir uma ação potencialmente insegura. Por motivos de segurança, o Windows impõe limites ao software de terceiros em execução na área de trabalho segura. Se você quiser que seu aplicativo de acessibilidade seja executado na área de trabalho segura, será necessário registrar o aplicativo na Central de Facilidade de Acesso.
Registrando-se com a Central de Facilidade de Acesso
Os aplicativos de acessibilidade registram-se na Central de Facilidade de Acesso criando uma ou mais chaves do Registro quando o aplicativo é instalado. A tabela a seguir lista as informações contidas nas chaves do Registro.
Nome | Descrição | Obrigatório/opcional | Idioma |
---|---|---|---|
Nome do aplicativo | O nome do aplicativo, que está em um arquivo de recurso. Esse valor do Registro contém uma cadeia de caracteres em um formato especificado. Essa poderá ser uma versão localizada do nome do aplicativo, se o aplicativo estiver localizado em idiomas diferentes do inglês. O nome aparece na Central de Facilidade de Acesso. |
Obrigatório | Localizada |
ATExe | O nome do arquivo executável do aplicativo ou imagem. O Windows usa esse valor para determinar se o aplicativo de acessibilidade está em execução. |
Obrigatório | Não localizado |
CopySettingsToLockedDesktop | Um valor DWORD que indica se as configurações do aplicativo de acessibilidade devem ser copiadas para a área de trabalho bloqueada. Se esse valor for 1, o aplicativo poderá gravar configurações em um local no registro de usuário e o Windows copiará as configurações para o mesmo local no registro de usuário para a área de trabalho bloqueada. Isso permite que o aplicativo persista seu estado da área de trabalho "normal" para a área de trabalho bloqueada. |
Opcional | Não localizado |
Descrição | Uma breve descrição do aplicativo, de um arquivo de recurso. Esse valor do Registro contém uma cadeia de caracteres em um formato especificado. Essa poderá ser uma versão localizada da descrição, se o aplicativo estiver localizado em idiomas diferentes do inglês. O comprimento dessa cadeia de caracteres deve ter menos de 512 caracteres. A descrição aparece na Central de Facilidade de Acesso para fornecer informações adicionais sobre o aplicativo de acessibilidade ao usuário. Esse valor também pode ser usado para notificar o usuário de que o aplicativo não é usado na área de trabalho segura. |
Obrigatório | Localizada |
Perfil | Um pequeno pedaço de XML que especifica as acomodações fornecidas pelo aplicativo. Ele garante que o aplicativo apareça na categoria correta na Central de Facilidade de Acesso. |
Obrigatório | Não localizado |
PassiveAutoStartBehavior | Um valor DWORD que indica se o comportamento de início automático herdado está habilitado. O valor padrão é 0, o que indica que um AT requer um comportamento de início automático herdado. Isso faz com que a configuração "Iniciar após a entrada" desse AT seja marcada no Painel de Controle e experiência de saída (OOBE) (consulte Painel de Controle –> Facilidade de Acesso –> Centro de Facilidade de Acesso –> Alterar configurações de entrada) e inicia automaticamente o AT após o UAC e a tela de bloqueio. Um valor de 1 indica que o AT deve usar o novo comportamento de início automático em que a configuração "Iniciar após a entrada" para esse AT não está marcada na OOBE (Experiência Pronta para Uso) e no Painel de Controle, e o AT é iniciado automaticamente uma vez por sessão de usuário (no logon) somente se a configuração "iniciar após a entrada" estiver marcada. |
Opcional | Não localizado |
SecureDesktopAccommodation | O nome de um aplicativo de acessibilidade alternativo a ser executado na área de trabalho segura no lugar deste aplicativo. A alternativa pode ser um aplicativo diferente, uma versão diferente do mesmo aplicativo, um dos aplicativos de acessibilidade incluídos no Windows ou "nenhum" se você não quiser executar nenhum aplicativo de acessibilidade na área de trabalho segura. |
Opcional | Não localizado |
Perfil Simples | Um valor que descreve como classificar o aplicativo em uma palavra ou duas: leitor de tela, lupa ou teclado na tela, por exemplo. |
Obrigatório | Não localizado |
StartExe | O caminho completo do executável. Esse valor é usado para iniciar o aplicativo de acessibilidade. |
Obrigatório | Não localizado |
StartParams | Argumentos de linha de comando. Esses valores são usados junto com StartExe para iniciar o aplicativo. |
Opcional | Não localizado |
TerminateOnDesktopSwitch | Um valor DWORD que especifica como o aplicativo de acessibilidade responde às transições de ou para a área de trabalho segura. Se esse valor não existir ou for 1, o Windows encerrará e reiniciará o aplicativo em cada transição de ou para a área de trabalho segura. Esse é o comportamento padrão. Se esse valor for 0, o Windows não encerrará o aplicativo de acessibilidade em uma transição de área de trabalho. O aplicativo continua a ser executado na área de trabalho anterior e o Windows iniciará uma nova instância na nova área de trabalho se uma instância ainda não estiver em execução lá. |
Opcional | Não localizado |
Localização
Os valores do Registro de Nome e Descrição do Aplicativo precisam ser localizáveis para dar suporte à MUI (Interface do Usuário Multilíngue).
Essas cadeias de caracteres estão no formato a seguir, em que colchetes angulares significam elementos necessários e colchetes que significam um elemento opcional.
@<ResDllPath\ResDLLFilename>,-<resID>[;<comentário>]
<ResDllPath\ResDLLFilename> é o caminho para a DLL do recurso. O caminho pode conter variáveis ambientais.
< > resID é a ID do recurso da cadeia de caracteres.
[comentário] contém comentários opcionais.
Aqui está um exemplo:
@%SystemRoot%\system32\anyAT.dll,-5020
Para obter mais informações sobre o MUI, consulte do Centro de Conhecimento mui do Windows.
Perfil HCI
O perfil de HCI (Human Computer Interaction) é uma maneira de determinar quais acomodações fornecer com base nas necessidades do usuário. Os aplicativos de acessibilidade devem registrar informações sobre o tipo de deficiência que o aplicativo ajuda a acomodar.
O valor do Registro de Perfil contém XML que descreve o tipo de deficiência direcionada pelo aplicativo de acessibilidade. Este XML tem o seguinte formato:
<HCIModel>
<Accommodation type="disability"/>
</HCIModel>
Os valores válidos para o atributo tipo de acomodação são os seguintes:
- visão leve
- visão severa
- cognitivo leve
- cognitivo severo
- destreza leve
- destreza grave
- audição leve
- audição severa
- fala leve
- fala severa
Nota
Esses valores diferenciam maiúsculas de minúsculas.
Se um aplicativo de acessibilidade der suporte a várias acomodações, o valor do Registro de Perfil deverá incluir um tipo de acomodação atributo para cada acomodação.
Facilidade de detalhes do Registro de Acesso
Para registrar seu aplicativo de acessibilidade, você precisa criar uma chave para seu aplicativo no local do registro a seguir e preenchê-la com pares nome-valor.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\
Nomeie a chave do Registro do aplicativo usando o seguinte formato:
"CompanyName_ProductName_v#"
Por exemplo, "Contoso_Magnifier_v2.0".
Para adicionar valores de registro, seu programa de instalação deve estar em execução com privilégios elevados.
Acomodação segura da área de trabalho
O SecureDesktopAccommodation chave do Registro permite especificar como seu aplicativo de acessibilidade responde à área de trabalho segura. Por padrão, a Central de Facilidade de Acesso iniciará seu aplicativo na área de trabalho segura se ele já estiver em execução na área de trabalho normal ou se ele estiver configurado para ser executado na área de trabalho de logon. Usando a chave SecureDesktopAccommodation, você pode:
Especifique uma versão alternativa do aplicativo para uso na área de trabalho segura. Por exemplo, você pode ter uma versão alternativa que desabilita recursos não protegidos ou é otimizado para usar menos memória e iniciar mais rapidamente.
Para especificar a versão alternativa, defina a chave SecureDesktopAccommodation para o nome da versão alternativa. Por exemplo, se você registrou seu aplicativo na chave Contoso_Screen Reader_v1.0, poderá registrar a versão alternativa em Contoso_Screen ReaderSecure_v1.0. Em seguida, defina a chave SecureDesktopAccommodation de Contoso_Screen Reader_v1.0 como "Contoso_Screen ReaderSecure_v1.0".
Especifique um aplicativo de acessibilidade da Microsoft para usar na área de trabalho segura no lugar do aplicativo. Para essa opção, defina SecureDesktopAccommodation com o nome do aplicativo de acessibilidade da Microsoft específico: "osk", "magnifierpane" ou "Narrador".
Especifique que seu aplicativo não deve ser executado na área de trabalho segura e nenhum aplicativo alternativo deve ser executado. Para essa opção, defina SecureDesktopAccommodation como "none" (recomendação) ou o nome de um aplicativo inexistente.
Se o SecureDesktopAccommodation chave do Registro para seu aplicativo de acessibilidade especificar um aplicativo de acessibilidade da Microsoft a ser executado na área de trabalho segura no lugar do aplicativo, o Windows notificará o usuário sobre isso ao fazer a transição para a área de trabalho segura. Para notificar o usuário, o Windows exibe a cadeia de caracteres especificada na chave do Registro de Descrição para seu aplicativo. Por exemplo, se o aplicativo ScreenReader Deluxe 1.0 usar o Microsoft Narrador na área de trabalho segura, ele incluirá uma cadeia de caracteres Descrição, como "O Microsoft Narrador será usado na área de trabalho bloqueada, logon e outras áreas de trabalho seguras no lugar do ScreenReader Deluxe 1.0".
Se a chave SecureDesktopAccommodation do seu aplicativo estiver definida como "none", use a chave de Descrição do para informar ao usuário que seu aplicativo não está disponível na área de trabalho segura e nenhuma alternativa será fornecida.
O Windows exibe o texto Descrição nos locais relevantes na Central de Facilidade de Acesso.
Em execução na instalação e na área de trabalho de logon
Se você acrescentar o nome da chave registrada do aplicativo de acessibilidade à cadeia de caracteres no local do registro a seguir, o Windows iniciará seu aplicativo imediatamente após ele ser instalado. Além disso, o Windows executará automaticamente seu aplicativo sempre que a área de trabalho de logon estiver ativa.
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\Configuration
A chave de configuração é uma cadeia de caracteres delimitada por vírgulas. Para adicionar seu aplicativo, acrescente uma cadeia de caracteres igual à chave do Registro do aplicativo em HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\.
Em execução em um trabalho
Se o TerminateOnDesktopSwitch chave do Registro não estiver presente ou estiver definido como diferente de zero, o Windows executará o aplicativo no contexto de um trabalho, encerrando e reiniciando o aplicativo com cada transição de área de trabalho. A execução em um trabalho garante que apenas uma única instância do aplicativo esteja em execução em um determinado momento e libere o aplicativo de ter que monitorar o estado da área de trabalho. As desvantagens de executar em um trabalho incluem:
- O aplicativo incorre em um custo de inicialização com cada transição de área de trabalho.
- O aplicativo só pode ser iniciado por meio da Central de Facilidade de Acesso.
- O aplicativo deve salvar continuamente suas configurações porque pode ser encerrado a qualquer momento por uma transição de área de trabalho.
Se o TerminateOnDesktopSwitch chave existir e estiver definido como 0, o Windows não executará o aplicativo de acessibilidade em um trabalho. Isso tem as seguintes vantagens:
- Nenhum custo de inicialização está associado a transições de área de trabalho.
- O aplicativo pode ser iniciado fora do Centro de Facilidade de Acesso.
As desvantagens de não ser executado em um trabalho incluem:
- Como o aplicativo não é reiniciado em transições de área de trabalho, ele deve detectar quando a área de trabalho atual está inativa e responder adequadamente. Por exemplo, o aplicativo deve renunciar ao controle de hardware para que a versão da área de trabalho segura do aplicativo possa usá-lo e o aplicativo deve entrar no modo de suspensão para evitar o uso de recursos do processador.
- Se o aplicativo puder ser iniciado por meio do menu Iniciar, do Windows Explorer ou da linha de comando, a Central de Facilidade de Acesso precisará ser informada. Para obter mais informações, consulte chave de logotipo do Windows + U.
- Como várias cópias do aplicativo podem ser executadas simultaneamente em áreas de trabalho diferentes, o aplicativo deve ser gravado para dar suporte a várias cópias em execução.
Tecla de logotipo do Windows + U
Se o aplicativo de acessibilidade estiver configurado para ser executado em um trabalho, o código de inicialização do aplicativo deverá incluir uma chamada para a função IsProcessInJob para determinar se o aplicativo está começando em um trabalho. Se estiver, o aplicativo deverá iniciar a Central de Facilidade de Acesso e sair. O exemplo a seguir mostra como chamar IsProcessInJob.
BOOL fAlreadyInJob;
BOOL fSuccess = IsProcessInJob(GetCurrentProcess(), NULL, &fAlreadyInJob);
Se o aplicativo de acessibilidade estiver configurado para ser executado fora de um trabalho, ele deverá notificar a Central de Facilidade de Acesso que o aplicativo está iniciando e continuar normalmente.
Independentemente de como o aplicativo está configurado, se ele fornecer uma maneira de sair de dentro do aplicativo, como um botão Fechar, o aplicativo deverá notificar a Central de Facilidade de Acesso de que ele está saindo.
Um aplicativo notifica a Central de Facilidade de Acesso definindo uma chave temporária do Registro e, em seguida, injetando a combinação de teclas Windows Logo + U no fluxo de entrada.
O aplicativo deve criar a chave temporária no local a seguir.
HKCU\Software\Microsoft\Windows NT\CurrentVersion\AccessibilityTemp
A chave temporária deve ter o mesmo nome que o nome do aplicativo registrado, como "Contoso_Screen Reader_v1.0". O valor da chave é um DWORD definido como 0x0003 quando está sendo iniciado ou 0x0002 quando o aplicativo está saindo.
INPUT input[4] = {0};
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = VK_LWIN;
input[0].ki.dwFlags = 0;
input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = 0x55; // U key
input[1].ki.dwFlags = 0;
input[2].type = INPUT_KEYBOARD;
input[2].ki.wVk = 0x55; // U key
input[2].ki.dwFlags = KEYEVENTF_KEYUP;
input[3].type = INPUT_KEYBOARD;
input[3].ki.wVk = VK_LWIN;
input[3].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(ARRAYSIZE(input), input, sizeof(input[0]));
Tecla de logotipo do Windows + Aumento de Volume
Quando o usuário inicia seu aplicativo de acessibilidade pressionando a combinação de teclas do Logotipo do Windows + Aumento de Volume (como em um dispositivo tablet), a Central de Facilidade de Acesso passa o seguinte argumento de linha de comando para o aplicativo:
/hardwarebuttonlaunch
Seu aplicativo pode usar esse argumento para determinar se deve ser iniciado normalmente ou ajustar o comportamento adequadamente.
Transferindo configurações seguras da área de trabalho
Se o aplicativo de acessibilidade der suporte à área de trabalho segura, você poderá usar o registro para copiar as configurações quando o aplicativo fizer a transição para a área de trabalho segura. Copiar configurações ajuda a fazer a transição para a área de trabalho segura mais perfeita para o usuário.
Para copiar as configurações, defina a chave do registro CopySettingsToLockedDesktop do aplicativo como 1 e armazene as configurações no local do registro a seguir.
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\<AT Key Name>
A Central de Facilidade de Acesso monitora esse local do Registro enquanto o aplicativo está em execução. Quando ocorre uma transição para a área de trabalho segura, a Central de Facilidade de Acesso copia as configurações para o mesmo local no hive do HKCU da área de trabalho segura. Em seguida, o aplicativo pode ler as configurações e retomar seu estado.
Seu aplicativo de acessibilidade deve gravar suas configurações em intervalos regulares ou sempre que os valores forem alterados. A gravação de configurações na saída do aplicativo não funcionará. Se o aplicativo estiver em execução em um trabalho, ele será encerrado na transição para longe da área de trabalho segura, antes que o código de saída tenha a chance de ser executado. Se o aplicativo não estiver em execução em um trabalho, o aplicativo não será encerrado na transição para longe da área de trabalho segura.
Cuidado
Como as chaves do Registro descritas aqui são escritas no modo de usuário, elas não são seguras. Se o aplicativo de acessibilidade ler o conteúdo dessas chaves, ele deverá verificar cuidadosamente os dados e usá-los com cuidado. Especificamente, seu aplicativo deve fazer uma verificação de limites DWORD valores, ter cuidado com comprimentos de cadeia de caracteres, não deve ler nomes DLL de plug-in e não deve executar nenhum comando encontrado em cadeias de caracteres.
Exemplos do Registro
O exemplo a seguir mostra os possíveis valores de registro para um produto fictício chamado Contoso ScreenReader versão 2.0, cujo nome localizado é armazenado como um recurso.
Os valores na tabela estão na seguinte chave:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\Contoso_Screen Reader_v2.0
Nome | Tipo | Dados | ||
---|---|---|---|---|
ApplicationName | REG_SZ | @%SystemRoot%\system32\ContosoRes.dll,-5020 | ||
Descrição | REG_SZ | @%SystemRoot%\system32\ContosoRes.dll,-5040 | ||
Perfil | REG_SZ |
|
||
SimpleProfile | REG_SZ | ScreenReader | ||
StartExe | REG_SZ | C:\ContosoTools\Bin\ContosoSR.exe | ||
StartParams | REG_SZ | |||
SecureDesktopAccommodation | REG_SZ | Narrador |
Se o aplicativo fornecer um leitor de tela e uma lupa de tela em um único executável, os valores do componente de leitor de tela poderão ter esta aparência:
Nome | Tipo | Dados | ||
---|---|---|---|---|
ApplicationName | REG_SZ | @C:\Program Files\Contoso\Contosores.dll,-30 | ||
Descrição | REG_SZ | @C:\Program Files\Contoso\Contosores.dll,-32 | ||
Perfil | REG_SZ |
|
||
SimpleProfile | REG_SZ | ScreenReader | ||
StartExe | REG_SZ | C:\Program Files\Contoso\Bin\ContosoSR.exe | ||
StartParams | REG_SZ | /r |
Os valores do componente de lupa estariam na seguinte chave:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Contosoibility\ATs\Contoso_Magnifier_v2.0
Nome | Tipo | Dados | ||
---|---|---|---|---|
ApplicationName | REG_SZ | @c:\Program Files\Contoso\Contosores.dll,-31 | ||
Descrição | REG_SZ | @c:\Program Files\Contoso\Contosores.dll,-42 | ||
Perfil | REG_SZ |
|
||
SimpleProfile | REG_SZ | Ampliação | ||
StartExe | REG_SZ | c:\Program Files\Contoso\Bin\ContosoSR.exe | ||
StartParams | REG_SZ | /m |