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 para HKEY_CURRENT_USER\Control Panel\Accessibility\StickyKeys e alterar os sinalizadores para 10 , 26 , 250 , 506 , você nomeou 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 a desativação de lá funciona, e vejo o Flags sendo alterado para 250 at HKEY_CURRENT_USER\Control Panel\Accessibility\StickyKeys , mas se eu inserir 250 manualmente, não funciona. Portanto, estou pensando que a configuração das teclas fixas deve ser salva em outro lugar também.

BTW Estou escrevendo um programa para desabilitar as teclas fixas com as chaves do registro, por isso não poderei usar a facilidade de acesso no painel de controle.

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

    
por Sophia 04.06.2014 / 10:32

2 respostas

0

Acho que este artigo deve ajudá-lo: link

Se você olhar no segundo exemplo, verá que basicamente lhe 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.

    
por 05.06.2014 / 08:40
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.

    
por 05.06.2014 / 07:18