Registro da tecnologia adaptativa de facilidade de Acesso

Este artigo explica como registrar um aplicativo de acessibilidade com a Central de Facilidade de Acesso. Ele também explica como personalizar seu aplicativo de acessibilidade para que ele funcione bem com a área de trabalho segura.

A Central de Facilidade de Acesso é um aplicativo Painel de Controle para Microsoft Windows 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 Virtual e Lupa. Os aplicativos de terceiros registrados também aparecem na Central 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 não segura. 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 se registram 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 da 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 Uma pequena parte de XML que especifica as acomodações que o aplicativo fornece. 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 na OOBE (Experiência Pronta para Uso) e Painel de Controle (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 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 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 desse 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 virtual, 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 continuará sendo 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 do Aplicativo e Descrição 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 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 para a cadeia de caracteres.

[comentário] contém comentários opcionais.

Veja um exemplo:

@%SystemRoot%\system32\anyAT.dll,-5020

Para obter mais informações sobre MUI, consulte Centro de Conhecimento MUI do Windows.

Perfil HCI

O perfil 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. Esse 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 grave
  • destreza leve
  • destreza grave
  • audição leve
  • audição severa
  • fala suave
  • fala severa

Observação

Estes 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 atributo tipo acomodação para cada acomodação.

Detalhes do Registro de Facilidade 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

A chave do Registro SecureDesktopAccommodation 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 seguros ou é otimizado para usar menos memória e iniciar mais rapidamente.

    Para especificar a versão alternativa, defina a chave SecureDesktopAccommodation como 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 como o nome do aplicativo de acessibilidade da Microsoft específico: "osk", "lupa" 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 a chave do Registro SecureDesktopAccommodation 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 do 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 de descrição, como "O Microsoft Narrador será usado nas áreas de trabalho bloqueadas, com logon e outras áreas de trabalho seguras no lugar do ScreenReader Deluxe 1.0".

Se a chave SecureDesktopAccommodation do aplicativo estiver definida como "nenhum", use a chave Descrição 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 a instalação. 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 a chave do Registro TerminateOnDesktopSwitch não estiver presente ou estiver definida como diferente de zero, o Windows executará o aplicativo no contexto de um trabalho, encerrando e reiniciando o aplicativo a cada transição da á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 libera 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 da área de trabalho.
  • O aplicativo só pode ser iniciado por meio do Centro de Facilidade de Acesso.
  • O aplicativo deve salvar continuamente suas configurações porque ele pode ser encerrado a qualquer momento por uma transição de área de trabalho.

Se a chave TerminateOnDesktopSwitch existir e estiver definida como 0, o Windows não executará o aplicativo de acessibilidade em um trabalho. Tem estas 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 executar 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 abrir mão do 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 Tecla do 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 do 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, em seguida, 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 de 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 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 do Logotipo do Windows + 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 do 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 + Tecla de 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 iniciar normalmente ou ajustar o comportamento adequadamente.

Transferindo configurações de área de trabalho segura

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 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á marcar cuidadosamente os dados e usá-los com cuidado. Especificamente, seu aplicativo deve fazer um limite marcar em valores DWORD, ter cuidado com comprimentos de cadeia de caracteres, não deve ler nomes de 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 do 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 sob a seguinte chave:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\Contoso_Screen Reader_v2.0

Nome Type Dados
ApplicationName REG_SZ @%SystemRoot%\system32\ContosoRes.dll,-5020
Descrição REG_SZ @%SystemRoot%\system32\ContosoRes.dll,-5040
Perfil REG_SZ
XML
<HCIModel>
   <Accommodation type="low vision">
   <Accommodation type="severe vision">
   <Accommodation type="mild cognitive">
</HCIModel>
SimpleProfile REG_SZ ScreenReader
StartExe REG_SZ C:\ContosoTools\Bin\ContosoSR.exe
StartParams REG_SZ
SecureDesktopAccommodation REG_SZ Narrator

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 Type 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
XML
<HCIModel>
   <Accommodation type="low vision">
   <Accommodation type="severe vision">
   <Accommodation type="mild cognitive">
</HCIModel>
SimpleProfile REG_SZ ScreenReader
StartExe REG_SZ C:\Program Files\Contoso\Bin\ContosoSR.exe
StartParams REG_SZ /r

Os valores para o componente de lupa estariam na seguinte chave:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Contosoibility\ATs\Contoso_Magnifier_v2.0

Nome Type 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
XML
<HCIModel>
   <Accommodation type="mild vision">
</HCIModel>
SimpleProfile REG_SZ Ampliação
StartExe REG_SZ c:\Program Files\Contoso\Bin\ContosoSR.exe
StartParams REG_SZ /m