在您否决此意见之前,我想说的是,网上发布的方法对我来说不起作用。
我尝试过将HKEY_CURRENT_USER\Control Panel\Accessibility\StickyKeys
Flags 改为10
、26
、250
、506
随便你怎么说,但还是没能禁用它。顺便说一句,我想禁用弹出的窗口和实际的粘滞键功能。
通过控制面板进入“轻松访问”部分并禁用它,我看到 被Flags
更改为250
,HKEY_CURRENT_USER\Control Panel\Accessibility\StickyKeys
但如果我手动输入 250,它不起作用。因此,我认为粘滞键设置也必须保存在其他地方。
顺便说一句,我正在编写一个程序来通过注册表项禁用粘滞键,因此我将无法从控制面板使用轻松访问。
那么,为什么注册表项更改对网络上的其他人有效,而对我无效?我使用的是 Windows 7 64 位。谢谢。
答案1
我认为这篇文章应该对你有帮助:http://msdn.microsoft.com/en-us/library/windows/desktop/ee416808(v=vs.85).aspx
如果您查看第二个示例,您会发现它基本上满足了您的要求。您可以将下面的代码(WinMain 方法除外)放在单独的文件中,然后让您的程序调用它。
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);
}
}
}
希望这有帮助。
答案2
我之前研究过它,发现还有另一个键显然保留了最后的配置:Software\Microsoft\Windows NT\CurrentVersion\Accessibility\Configuration
只需插入空值(以及您上面提到的各自键的值),就可以了。