Desativar as teclas de aderência com a chave do Registro não funciona


1

Antes de votar, gostaria de dizer isso agora que os métodos postados na rede não funcionam para mim.

Eu tentei ir HKEY_CURRENT_USER\Control Panel\Accessibility\StickyKeys e mudando as bandeiras para 10, 26, 250, 506, você nomeia e ainda não desativa. BTW gostaria de desabilitar o pop-up que aparece e a funcionalidade real da chave.

Indo para a parte de facilidade de acesso através do painel de controle e desativando lá funciona, e eu vejo o Flags sendo alterado para 250 a HKEY_CURRENT_USER\Control Panel\Accessibility\StickyKeys , mas se eu digitar 250 manualmente, não funciona. Portanto, estou pensando que a configuração das teclas adesivas deve ser salva em outro lugar também.

BTW Eu estou escrevendo um programa para desabilitar as teclas fixas com chaves de registro, então eu não será capaz de usar a facilidade de acesso no painel de controle.

Então, por que a chave do registro muda o trabalho para outras pessoas na rede, e não eu? Estou usando o Windows 7 de 64 bits. Obrigado.

Respostas:


0

Eu acho que este artigo deve ajudá-lo: http://msdn.microsoft.com/pt-br/library/windows/desktop/ee416808(v=vs.85).aspx

Se você olhar para o segundo exemplo, verá que basicamente dá o que você quer. Você pode colocar o código abaixo (além do método WinMain) em um arquivo separado e fazer com que seu programa o chame.

STICKYKEYS g_StartupStickyKeys = {sizeof(STICKYKEYS), 0};
TOGGLEKEYS g_StartupToggleKeys = {sizeof(TOGGLEKEYS), 0};
FILTERKEYS g_StartupFilterKeys = {sizeof(FILTERKEYS), 0};    


INT WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int )
{
    // Save the current sticky/toggle/filter key settings so they can be restored them later
    SystemParametersInfo(SPI_GETSTICKYKEYS, sizeof(STICKYKEYS), &g_StartupStickyKeys, 0);
    SystemParametersInfo(SPI_GETTOGGLEKEYS, sizeof(TOGGLEKEYS), &g_StartupToggleKeys, 0);
    SystemParametersInfo(SPI_GETFILTERKEYS, sizeof(FILTERKEYS), &g_StartupFilterKeys, 0);

    // Disable when full screen
    AllowAccessibilityShortcutKeys( false );

    // Restore back when going to windowed or shutting down
    AllowAccessibilityShortcutKeys( true );
}


void AllowAccessibilityShortcutKeys( bool bAllowKeys )
{
    if( bAllowKeys )
    {
        // Restore StickyKeys/etc to original state and enable Windows key      
        STICKYKEYS sk = g_StartupStickyKeys;
        TOGGLEKEYS tk = g_StartupToggleKeys;
        FILTERKEYS fk = g_StartupFilterKeys;

        SystemParametersInfo(SPI_SETSTICKYKEYS, sizeof(STICKYKEYS), &g_StartupStickyKeys, 0);
        SystemParametersInfo(SPI_SETTOGGLEKEYS, sizeof(TOGGLEKEYS), &g_StartupToggleKeys, 0);
        SystemParametersInfo(SPI_SETFILTERKEYS, sizeof(FILTERKEYS), &g_StartupFilterKeys, 0);
    }
    else
    {
        // Disable StickyKeys/etc shortcuts but if the accessibility feature is on, 
        // then leave the settings alone as its probably being usefully used

        STICKYKEYS skOff = g_StartupStickyKeys;
        if( (skOff.dwFlags & SKF_STICKYKEYSON) == 0 )
        {
            // Disable the hotkey and the confirmation
            skOff.dwFlags &= ~SKF_HOTKEYACTIVE;
            skOff.dwFlags &= ~SKF_CONFIRMHOTKEY;

            SystemParametersInfo(SPI_SETSTICKYKEYS, sizeof(STICKYKEYS), &skOff, 0);
        }

        TOGGLEKEYS tkOff = g_StartupToggleKeys;
        if( (tkOff.dwFlags & TKF_TOGGLEKEYSON) == 0 )
        {
            // Disable the hotkey and the confirmation
            tkOff.dwFlags &= ~TKF_HOTKEYACTIVE;
            tkOff.dwFlags &= ~TKF_CONFIRMHOTKEY;

            SystemParametersInfo(SPI_SETTOGGLEKEYS, sizeof(TOGGLEKEYS), &tkOff, 0);
        }

        FILTERKEYS fkOff = g_StartupFilterKeys;
        if( (fkOff.dwFlags & FKF_FILTERKEYSON) == 0 )
        {
            // Disable the hotkey and the confirmation
            fkOff.dwFlags &= ~FKF_HOTKEYACTIVE;
            fkOff.dwFlags &= ~FKF_CONFIRMHOTKEY;

            SystemParametersInfo(SPI_SETFILTERKEYS, sizeof(FILTERKEYS), &fkOff, 0);
        }
    }
}

Espero que isso ajude.


1

Eu pesquisei há um tempo atrás, e descobri que havia outra chave que aparentemente mantém a última configuração: Software \ Microsoft \ Windows NT \ CurrentVersion \ Acessibilidade \ Configuração

Basta inserir o valor vazio (assim como os valores mencionados acima em suas respectivas chaves), e isso deve ser feito.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.