alibekНет, эту-то константу я как раз нашёл сразу и она мне очень понравилась... то есть, не она, а её антипод siDoNotUpdateINIFile Мне как раз нужно, чтобы мои изменения не сохранялись.
А найти я не мог константы для отключения залипания клавиш и фильтрации ввода.
Собственно, нашёл
Сначала нашёл здоровский модуль от GSerg
http://www.vbstreets.ru/VB/Sources/65777.aspx А потом и константы. Вот:
SPI_GETSTICKYKEYS Retrieves information about the StickyKeys accessibility feature. The pvParam parameter must point to a STICKYKEYS structure that receives the information. Set the cbSize member of this structure and the uiParam parameter to sizeof(STICKYKEYS).
SPI_GETFILTERKEYS Retrieves information about the FilterKeys accessibility feature. The pvParam parameter must point to a FILTERKEYS structure that receives the information. Set the cbSize member of this structure and the uiParam parameter to sizeof(FILTERKEYS).
И аналогичные SPI_SETFILTERKEYS SPI_SETFILTERKEYS
По аналогии с примером от GSerg наваял такой код (снятие-установка способа включения залипания клавиш):
модуль SystemInfo
- Код: Выделить всё
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" ( _
ByVal uAction As Long, _
ByVal uParam As Long, _
lpvParam As Any, _
ByVal fuWinIni As Long) As Long
Public Type STICKKYKEYS
cbSize As Long
dwFlags As Long
End Type
Public Const SKF_HOTKEYACTIVE = 4
Private Const SPI_GETSTICKYKEYS = 58
Private Const SPI_SETSTICKYKEYS = 59
Property Get stickkyKeysInf() As STICKKYKEYS
stickkyKeysInf.cbSize = Len(stickkyKeysInf)
SystemParametersInfo SPI_GETSTICKYKEYS, stickkyKeysInf.cbSize, stickkyKeysInf, 0&
End Property
'typedef struct tagSTICKYKEYS {
' DWORD cbSize;
' DWORD dwFlags;
'} STICKYKEYS, *LPSTICKYKEYS;
Property Let stickkyKeysInf(st As STICKKYKEYS)
st.cbSize = Len(st)
SystemParametersInfo SPI_SETSTICKYKEYS, st.cbSize, st, 0&
End Property
Использование:
- Код: Выделить всё
Private Sub setStickkyKeysHotKeyActive(YesNo As Boolean)
Dim st As STICKKYKEYS
st = SystemInfo.stickkyKeysInf
If YesNo Then
st.dwFlags = st.dwFlags Or SKF_HOTKEYACTIVE
Else
st.dwFlags = st.dwFlags And (Not SKF_HOTKEYACTIVE)
End If
SystemInfo.stickkyKeysInf = st
End Sub
Всё работает! Спасибо огромное за наводку
Один вопросик вдогонку: для включения-выключения того же самого у фильтрации ввода нужна структура:
- Код: Выделить всё
typedef struct tagFILTERKEYS {
UINT cbSize;
DWORD dwFlags;
DWORD iWaitMSec;
DWORD iDelayMSec;
DWORD iRepeatMSec;
DWORD iBounceMSec;
} FILTERKEYS *LPFILTERKEYS;
Что за тип UINT? Это Long?