Автор Тема: BlockInputEx - Расширенная блокировка мышки и клавиатуры  (Прочитано 59911 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Обновление.

Цитировать
[v1.4 - 03.08.2010, 12:00]
+ Поддержка AutoIt 3.3.6.1.
* Исправлена проблема с залипанием клавиш "Alt + Ctrl" после вызова "Alt + Ctrl + Del". Кроме прочего, это вызывало проблемы дальнейшего использования HotKeySet.
* Исправлены примеры для совместимости с AutoIt 3.3.6.1.
* Мелкие косметические поправки в коде.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt

Re: BlockInputEx - Расширенная блокировка мышки и клавиатуры
« Ответ #15 Отправлен: Август 03, 2010, 14:46:45 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Мелкое fix-обновление («проблема с залипанием клавиш "Alt + Ctrl"») для тех (того?) кто успел скачать последнюю версию. Номер версии остался тот же.
« Последнее редактирование: Август 03, 2010, 19:48:07 от CreatoR »

Оффлайн WSWR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 935
  • Репутация: 352
    • Награды
  • Версия AutoIt: 3.3.14.0
А для определенного окна можно блокировать нажатия\отжатия мыши? Попробовал - с клавиатурой без проблем, с мышью - блокирует для всех окон или не блокирует вообще.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: BlockInputEx - Расширенная блокировка мышки и
« Ответ #18, Отправлен: Сентябрь 11, 2010, 09:03:05 »
WSWR
А для определенного окна можно блокировать нажатия\отжатия мыши? Попробовал - с клавиатурой без проблем, с мышью - блокирует для всех окон или не блокирует вообще.
Покажи как пробовал.

Русское сообщество AutoIt

Re: BlockInputEx - Расширенная блокировка мышки и
« Ответ #18 Отправлен: Сентябрь 11, 2010, 09:03:05 »

Оффлайн WSWR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 935
  • Репутация: 352
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: BlockInputEx - Расширенная блокировка мышки и
« Ответ #19, Отправлен: Сентябрь 11, 2010, 13:26:26 »
Покажи как пробовал.

Код: AutoIt [Выделить]
#include <BlockInputEx.au3>
Run(@WindowsDir & "\Notepad.exe", "", @SW_RESTORE)
WinWait("Безымянный — Блокнот")
$hNotepad_Wnd = WinGetHandle("Безымянный — Блокнот")
ControlSetText($hNotepad_Wnd, "", "", _
    "Now try to input some keys in here..." & @CRLF & _
    "Well, that's the idea, you can't, don't you?" & @CRLF & @CRLF & ":)")
_BlockInputEx(2, "", "", $hNotepad_Wnd)
While 1
    Sleep(100)
WEnd


В принципе, работает, но следующим образом: если окно блокнота становится активным, то мышь блокируется на всем экране, если же с помощью клавиатуры активизировать другое окно, то мышь начинает работать. Подстановка в функцию {MPDOWN}, {MPUP} и т.д. не меняет поведение скрипта
Изначально цель была запретить нажатия кнопок мыши в этом окне, чтобы его нельзя было перемещать, закрывать и т.д.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
WSWR  [?]
Цитировать
Подстановка в функцию {MPDOWN}, {MPUP} и т.д. не меняет поведение скрипта
Для мышки $hWindows не предназначено, т.к в момент блокировния всё ровно фокус переместить на другое окно нельзя. Хотя это можно обойти если проверять окно под курсором.

Код: AutoIt [Выделить]
#include <BlockInputEx.au3>

HotKeySet("{ESC}", "_Quit") ;This will trigger an exit (on the Notepad's window).

Global $iMark = 0

Run(@WindowsDir & "\Notepad.exe", "", @SW_MAXIMIZE)
WinWait("[REGEXPCLASS:Notepad.*]")
$hNotepad_Wnd = WinGetHandle("[REGEXPCLASS:Notepad.*]")

;This is only for testing, so if anything go wrong, the script will exit after 10 seconds.
AdlibRegister("_Quit", 10000)

While 1
    If $iMark = 0 And _WinGetHoveredHandle() = $hNotepad_Wnd Then
        $iMark = 1
        _BlockInputEx(2, "", "{MPDOWN}|{MPUP}|{MSDOWN}|{MSUP}")
    ElseIf $iMark = 1 And _WinGetHoveredHandle() <> $hNotepad_Wnd Then
        $iMark = 0
        _BlockInputEx(0)
    EndIf
   
    Sleep(10)
WEnd

Func _Quit()
    Exit
EndFunc

Func _WinGetHoveredHandle()
    Local $iOld_Opt_MCM = Opt("MouseCoordMode", 1)
    Local $aRet = DllCall("user32.dll", "int", "WindowFromPoint", "long", MouseGetPos(0), "long", MouseGetPos(1))
    Opt("MouseCoordMode", $iOld_Opt_MCM)
    $aRet = DllCall("User32.dll", "hwnd", "GetAncestor", "hwnd", $aRet[0], "uint", 2) ;$GA_ROOT
    Return HWnd($aRet[0])
EndFunc

« Последнее редактирование: Февраль 11, 2013, 07:15:34 от CreatoR »

Оффлайн WSWR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 935
  • Репутация: 352
    • Награды
  • Версия AutoIt: 3.3.14.0
CreatoR
Отличный пример, спасибо!

Оффлайн Sky-WaLkeR [?]

  • Продвинутый
  • ***
  • Сообщений: 332
  • Репутация: 95
  • Пол: Мужской
    • Naboko
    • Награды
  • Версия AutoIt: 3.3.12.0
UDF классная и полезная! Но! Какая-то странная ошибка...
Хочу сделать блокировщика экрана. Вот часть кода:
Код: AutoIt [Выделить]
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <BlockInputEx.au3>
$gui=GUICreate('s',0,0,0,0,$WS_POPUP,$WS_EX_COMPOSITED)
;GUICtrlCreatePic(@ScriptDir & '\bg.gif',0,0,@DesktopWidth+2,@DesktopHeight+2)
GUISetState()
WinSetOnTop('s','',1)
_BlockInputEx(1,"[:NUMBER:]|{ENTER}|{BACKSPACE}|{LCTRL}|{MPDOWN}|{MPUP}")
 

Я хочу заблокировать все кроме левого Ctrl, BackSpace, Enter, всех цифр и нажатия на мышку. Но! Все вроде нормально, мышь не двигается, но работают Windows-сочетания, такие как Ctrl-Alt-Delete, Win-E, Ctrl-Esc и другие, хотя эти кнопки заблочены. Потом в этом же скрипте использую цикл проверки нажатия левого Ctrl + левая мышка (да, вот такой хоткей у меня  :)). Использую _IsPressed UDF. Вот код:
Код: AutoIt [Выделить]
#include <IsPressed_UDF.au3>
AdlibRegister('my_Rescue',3000)
Func my_Rescue()
    if _IsAndKeyPressed('11|01') Then
    Beep(500,500)
    $var=InputBox('','Введи пароль!','','+')
    EndIf
EndFunc
 

Как это можно исправить? Ведь какая блокировка без блокировки системных хоткеев?  :)

Русское сообщество AutoIt

Re: BlockInputEx - Расширенная блокировка мышки и клавиатуры
« Ответ #22 Отправлен: Апрель 04, 2011, 21:27:55 »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Sky-WaLkeR  [?]
Цитировать
Ведь какая блокировка без блокировки системных хоткеев?
Посмотрите здесь: HotKey - Установка горячих клавиш
Цитировать
Возможность установить абсолютно любые горячие клавиши, включая такие как CTRL+ALT+DEL*, F12, WIN+... и т.д
Попробуйте назначить на них функцию типа $i + 1.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Sky-WaLkeR  [?]
Цитировать
работают Windows-сочетания, такие как Ctrl-Alt-Delete
«Ctrl+Alt+Del» заблокировать нельзя, это особенность системы, однако в отличий от встроенной BlockInput, тут ввод пользователя не активируется.

Цитировать
Использую _IsPressed UDF
Не эту версию надо полагать?

P.S
Я забыл обновить тут, но уже давненько доступна версия 1.5, и сейчас выложу 1.6...

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827

  • Автор темы
  • Репутация: 2287
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Обновил библиотеку, см. первое сообщение темы.

Оффлайн Sky-WaLkeR [?]

  • Продвинутый
  • ***
  • Сообщений: 332
  • Репутация: 95
  • Пол: Мужской
    • Naboko
    • Награды
  • Версия AutoIt: 3.3.12.0
Creator
Нет, не эту, надо исправить ). Спасибо за быстрый ответ и обновление UDF.
madmasles
Спасибо за ссылку, поэкспериментирую...

Оффлайн WSWR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 935
  • Репутация: 352
    • Награды
  • Версия AutoIt: 3.3.14.0
А возможно сделать блокировку клавиш с разных клавиатур?
На оф форуме есть такая тема:
http://www.autoitscript.com/forum/topic/95105-hid-human-interface-device-communications-in-xp/
Получается, детектировать устройство, генерирующее нажатие, возможно, но можно ли блокировать одно и не блокировать другое? :-\
Интересно было бы и раздельное назначение горячих клавиш.

Оффлайн WSWR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 935
  • Репутация: 352
    • Награды
  • Версия AutoIt: 3.3.14.0
И все-таки было бы интересно узнать мнение старших товарищей о возможности блокировки разных клавиатур\устройств ввода :laugh:

Оффлайн Alexander [?]

  • Новичок
  • *
  • Сообщений: 105
  • Репутация: 2
    • Награды
А можете показать, как с минимальным количеством действий заблокировать, например, Alt (и др. кнопки (без мышки))?
Просто хочу понять как это работает, а в этой библиотеке ничего не понятно.

Русское сообщество AutoIt

Re: BlockInputEx - Расширенная блокировка мышки и клавиатуры
« Ответ #29 Отправлен: Июнь 14, 2011, 13:14:44 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
9 Ответов
12661 Просмотров
Последний ответ Май 20, 2010, 17:51:50
от Detka.i.alex
11 Ответов
6482 Просмотров
Последний ответ Октябрь 12, 2017, 17:11:51
от Tyr
2 Ответов
2665 Просмотров
Последний ответ Ноябрь 14, 2012, 17:20:51
от cthutq
1 Ответов
1715 Просмотров
Последний ответ Апрель 13, 2014, 16:35:59
от madmasles
15 Ответов
4528 Просмотров
Последний ответ Декабрь 03, 2014, 10:45:02
от be4hoctb
0 Ответов
1674 Просмотров
Последний ответ Май 19, 2015, 08:56:36
от jslby
0 Ответов
1071 Просмотров
Последний ответ Май 19, 2015, 10:28:18
от Yashied
11 Ответов
2173 Просмотров
Последний ответ Апрель 26, 2016, 16:25:05
от Vovsla
2 Ответов
461 Просмотров
Последний ответ Сентябрь 01, 2017, 11:50:23
от gerkuless
6 Ответов
428 Просмотров
Последний ответ Февраль 08, 2018, 17:08:29
от yl3d