1

Тема: AHK: Блокировка клавиатуры от кота.

Здравствуйте!

Вопрос такого характера:

У меня есть кот, который очень любит лежать на ноутбуке, во время просмотра мною сериалов. Разумеется лапками он нажимает все кнопки подряд.
Для спасения я пользуюсь скриптом "АнтиКот" для VLC:

window := "ahk_class ****"

OnExit(Func("KeyboardHook").Bind(false))

Loop {
   WinWaitActive, % window
   KeyboardHook(true)
   WinWaitNotActive, % window
   KeyboardHook(false)
}
   
KeyboardHook(set) {
   static hHook
   if !set
      (hHook && DllCall("UnhookWindowsHookEx", Ptr, hHook) && hHook := "")
   else
      hHook := DllCall("SetWindowsHookEx", Int, WH_KEYBOARD_LL := 13
                                         , Ptr, RegisterCallback("LowLevelKeyboardProc", "Fast")
                                         , Ptr, DllCall("GetModuleHandle", UInt, 0, Ptr)
                                         , UInt, 0, Ptr)
}

LowLevelKeyboardProc(nCode, wParam, lParam)
{
   Return 1
}

На простой клавиатуре всё классно работает, однако на ноутбучной верхний ряд F1-12, а именно горячие функции (яркость, выкл звука и тд.) не реагируют на работу скрипта.
Как можно сделать полный блок?

2 (изменено: wisgest, 2021-10-28 09:37:34)

Re: AHK: Блокировка клавиатуры от кота.

С помощью AHK, скорее всего, нельзя. Но, например, в моём теперешнем ноутбуке в настройках BIOS можно указать, чтобы «горячие функции (яркость, выкл звука и тд.)» работали в сочетании с клавишей Fn (как это и должно быть).

3

Re: AHK: Блокировка клавиатуры от кота.

Ну как же нельзя?
Нужно вешать WH_SHELL хук на WM_APPCOMMAND сообщения.
А для этого нужно написать dll.