Что нового

Мышь, клавиатура Как блокировать ввод, оставляя его рабочим для скрипта AutoIt?

Oki

Продвинутый
Сообщения
452
Репутация
62
Как блокировать клавиатуру и мышь, чтобы при этом продолжать обрабатывать все связанные с ними события в скрипте AutoIt эксклюзивно?
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Глобальный хук на клаву с мышью. В функции хука определять приложение и для своего пропускать, а для остальных блокировать события.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Для мыши определяете окно на которым курсор
Код:
$tPoint = DllStructCreate($tagPOINT, $lParam)
$hWnd = _WinAPI_GetAncestor(_WinAPI_WindowFromPoint($tPoint), $GA_ROOT)
и если приложение разрешено пропускаете события, иначе блокируйте.

Для клавиатуры аналогично, только используйте
Код:
WinGetTitle('[ACTIVE]')
для определения текущего окна.
 
Автор
Oki

Oki

Продвинутый
Сообщения
452
Репутация
62
для определения текущего окна.
Дело в том, что статус текущего окна не является постоянным. Он может смениться даже до следующей проверки текущего окна, не говоря уже о том, что не хотелось бы такими постоянными проверками нагружать скрипт.

Во-вторых, для полного освещения темы хотелось бы также увидеть, как грамотно закодить такой глобальный хук и такую блокировку. Поиск выдаёт по этому поводу очень разные пространные обсуждения, из которых без опыта по конкретному вопросу проблематично выделить полезное.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Ищите примеры с функцией _WinAPI_SetWindowsHookEx с параметрами $WH_KEYBOARD_LL и $WH_MOUSE_LL.
 
  • Like
Реакции: Oki
Верх