|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Разблокирование Клавиатуры и мыши по нажатию на {ESC} |
|
|
[решено] Разблокирование Клавиатуры и мыши по нажатию на {ESC}
|
Ветеран Сообщения: 903 |
Профиль | Отправить PM | Цитировать
Собственно, не срабатывает такой скрипт:
#include <BlockInputEx.au3> ;================== Block All Example ================== HotKeySet("", "_Quit") ; отработка функции _Quit при нажатии на ескей ;Блокирует клавиатуру и мышь. Исключение - нажатие на клавишу Ескей _BlockInputEx(1, "0x1B") ;на всякий случай, разблокировка в любом случае через 15 seconds. Sleep(15000) _BlockInputEx(0) Func _Quit() ; задание самой функции _Quit (разблокирования) _BlockInputEx(0) EndFunc Скрипт -немного модифицированный пример из _BlockInputEx_UDF_1.3 (от MrCreator). |
|
Отправлено: 01:27, 03-08-2010 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата saavaage:
Кстати можно и так: |
|
------- Отправлено: 01:50, 03-08-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 903
|
Профиль | Отправить PM | Цитировать Creat0R, это я пропустил, когда копировал. На компе, естессвенно, с {ESC}. Не работает. Уже и так и так пробЫвал.
|
------- Отправлено: 01:54, 03-08-2010 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата saavaage:
|
|
------- Отправлено: 01:56, 03-08-2010 | #4 |
Ветеран Сообщения: 903
|
Профиль | Отправить PM | Цитировать Creat0R, может быть в моей функции? у меня версия 1.3
Вот получившийся скрипт: #include <BlockInputEx.au3> ;================== Block All Example ================== HotKeySet("{ESC}", "_Quit") ; отработка функции _Quit при нажатии на ескей ;Блокирует клавиатуру и мышь. Исключение - нажатие на клавишу Ескей _BlockInputEx(1, "{ESC}") ;на всякий случай, разблокировка в любом случае через 15 seconds. Sleep(15000) _BlockInputEx(0) Func _Quit() ; задание самой функции _Quit (разблокирования) _BlockInputEx(0) EndFunc На всякий, прикрепил сам скомпилированный файл. Разблокировка по любому через 15 сек |
|
Последний раз редактировалось saavaage, 30-09-2010 в 01:48. Отправлено: 01:59, 03-08-2010 | #5 |
Ветеран Сообщения: 903
|
Профиль | Отправить PM | Цитировать Creat0R, не знаю, в чем было дело, но после перезагрузки ПК, все отработало на ура. Спасибо. Тема закрыта.
|
------- Последний раз редактировалось saavaage, 03-08-2010 в 05:37. Отправлено: 03:39, 03-08-2010 | #6 |
Ветеран Сообщения: 903
|
Профиль | Отправить PM | Цитировать Creat0R, рано я обрадовался.. Обнаружил такой косячок:
если просто нажимаешь F8, то блокировка снимается; если же сначала нажать Ctrl+Alt+Del, то потом жать на F8 бесполезно. Даже и не знаю, как это "объехать"... Код: ;Предотвращение появление процесса-клона If WinExists(@ScriptName) Then Exit AutoItWinSetTitle(@ScriptName) ;Блокирование ПК #include <BlockInputEx.au3> Opt("WinWaitDelay", 1) $sTaskMgr_Title = "[CLASS:#32770;REGEXPTITLE:(Диспетчер задач|Task Manager)]" ;Disable Task Manager RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr", "REG_DWORD", "1") HotKeySet("{F8}", "_Quit") ; отработка функции _Quit при нажатии на F8 ;Блокирует клавиатуру и мышь. Исключение - нажатие на клавишу F8 _BlockInputEx(1, "{F8}") Func _Quit() ; задание самой функции _Quit (разблокирования) _BlockInputEx(0) EndFunc ; в случае, если скрипт запускается из батника, то первый параметр ком . строки передаетс в $line (задаем время отработки прогресс-бара) if $CmdLine[0] > 0 Then $line = $CmdLine[1] Else ;иначе идет считывание из finish.cmd времени отработки прогрессбара и передача этого значения в переменную $line $line = FileReadLine(@ScriptDir & "\finish.cmd", 2) EndIf $iPID = Run(@COMSPEC & ' /c %SYSTEMDRIVE%\finish.cmd', "", @SW_HIDE) While ProcessExists($iPID) $Title = "Пожалуйста, подождите..." ; Заголовок $SubTitle = "Происходит финализация установки" ; Суб-заголовок $Message = "После удаления мусора, оставшегося от установки" & @CRLF ; Сообщение. Записано в таком виде для удобства $Message &= "XP и создания/перемещения ярлыков, Система" & @CRLF $Message &= "будет перезагружена. Осталось времени: " $Time = $line ; Время здесь хранится в миллескундах. 1 с = 1000 мс $Sleep = 0.01 * 100000 ; 10 мс. Меньше 1 мс ставить не рекомундуется. Впрочем, тут и 100 мс хватает. $Timer = TimerInit() ; Инициализация таймера. ProgressOn($Title, $SubTitle, $Message & $Time) ; Параметры: заголовок, суб-заголовок, сообщение. Включаем окно прогресса. While TimerDiff($Timer) < $Time ; Пока прошло времени меньше чем нужно - повторять: ProgressSet(TimerDiff($Timer) / $Time * 100, $Message & Round(($Time - TimerDiff($Timer)) / 1000, 0) & " секунд") ; ProgressSet ( percent [, "subtext" [, "maintext"]] ) ; Параметр 1: процент прогресса. Прошедшее время делим на требуемое и умножаем на 100 ; Параметр 2: сообщение. Стандартное, как в перменной $Message плюс оставшееся время округлённое до целых ; Параметр 3: опциональный. Здесь не используется. Sleep($Sleep); Подожать $Sleep мс WEnd WEnd ProgressSet(100, "ПЕРЕЗАГРУЗКА! УДАЧНОЙ РАБОТЫ!") ; Выводим последнее сообщение. Sleep(3000) ; Чтобы было видно последнее сообщение. ;Enable Task Manager back RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr", "REG_DWORD", "0") ; Функция самоудалениея скрипта #Include <File.au3> Func _ScriptDestroy() $sTemp = _TempFile(@TempDir, '~', '.bat') $sPath = FileGetShortName(@ScriptFullPath) $hFile = FileOpen($sTemp, 2) FileWriteLine($hFile, '@echo off') FileWriteLine($hFile, ':loop') FileWriteLine($hFile, 'del ' & $sPath) FileWriteLine($hFile, 'if exist ' & $sPath & ' goto loop') FileWriteLine($hFile, 'del ' & $sTemp) FileClose($hFile) Run($sTemp, '', @SW_HIDE) EndFunc ;==>_ScriptDestroy _ScriptDestroy() Sleep(1000) Shutdown(2) |
------- Отправлено: 12:18, 03-08-2010 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата saavaage:
|
|
------- Отправлено: 12:45, 03-08-2010 | #8 |
Ветеран Сообщения: 903
|
Профиль | Отправить PM | Цитировать Creat0R, может привязать к функции разблокировки не только:
_BlockInputEx(0) но и разблокировать диспетчер задач: Цитата saavaage:
|
|
------- Отправлено: 12:51, 03-08-2010 | #9 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата saavaage:
Проблема именно в залипании «Ctrl + Alt». Я что то не могу найти как програмно “отлепить” эти клавиши - я бы тогда смог это добавить в функцию (определение нажатия Alt + Ctrl + Del и последующее их отлипание). |
|
------- Отправлено: 13:02, 03-08-2010 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Клавиатура - Покупка беспроводной клавиатуры и мыши | GooG1e | Выбор отдельных компонентов компьютера и конфигурации в целом | 1 | 30-04-2010 13:06 | |
[решено] Блокировка клавиатуры и мыши | leprecon | AutoIt | 12 | 12-07-2009 20:37 | |
Обрубание мыши и клавиатуры | kelz | Microsoft Windows 2000/XP | 9 | 06-04-2006 08:24 | |
Как избавиться от необходимости нажатия ESC после изменении расклада клавиатуры? | Do Not Disturb | Microsoft Windows 95/98/Me (архив) | 3 | 16-02-2005 23:32 | |
Блокировка клавиатуры и мыши | Sonic | Программирование и базы данных | 6 | 24-04-2004 04:59 |
|