| Автор
| Сообщение |
|
|
|
Цитата |
|
Люди, кто знает как включить клавиатуру и мышку после того как их отключили при помощи "rundll32 keyboard,disable" и
"rundll32 mouse,disable" ?
Пробовал угадать: "rundll32 keyboard,enable" и
"rundll32 mouse,enable", но в ответ одни матюки или тишина. |
|
| В начало |
|
 |
|
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
перезагрузка тебе поможет... _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Перезагрузка, конечно помогает, вот только включить их нужно не перезагружаясь.... |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
а зачем отключать нужно было?
можнео попробовать хук, а когда нужно его отключть... _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
Да нет, идея верная - там есть функции enable. Возможно, нужны еще кое-какие параметры. Это доку нужно читать _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
P.S. Вопрос в том, какая это была винда. Дело в том, что keyboard.drv и mouse.drv - это древние дрова с NE-заголовком, и rundll32 не обязана с ними корректно работать _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Спасибо всем, но я уже сам нашел...
Клаву и мышу вырубает процедура BlockInput из user32.dll
Вот только Ctrl-Alt-Del снимает всю блокировку
Винда 98-ая. |
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
А тогда попробуй то же, но с rundll вместо rundll32 _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
 Шурик
Я живу тут....

Возраст: 42
Знак зодиака: 
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
|
|
|
Цитата |
|
Не знаю по теме или не очень. Вот как это делать хуками:
| Код: | function KeyHook(Code: integer; WParam: Longint; LParam: Longint): Longint; stdcall;
begin
Result:= -1;
end;
function MouseHook(Code: integer; WParam: Longint; LParam: Longint): Longint; stdcall;
begin
Result:= -1;
end;
procedure EnableInput( Value: Boolean );
begin
if Value then
begin
if MouseHookHandle <> 0 then UnhookWindowsHookEx(MouseHookHandle);
if KeyHookHandle <> 0 then UnhookWindowsHookEx(KeyHookHandle);
end else
begin
KeyHookHandle := SetWindowsHookEx(WH_KEYBOARD, KeyHook, HInstance, 0);
MouseHookHandle := SetWindowsHookEx(WH_MOUSE, MouseHook, HInstance, 0);
end;
end; |
А Ctrl-Alt-Del на 98-й вроде бы запрещается так:
| Код: | var old_cad: Boolean;
procedure EnableCtrlAltDel( Value: Boolean );
begin
if Value
then SystemparametersInfo( SPI_ScreenSaverRunning, 0, @old_cad, 0 )
else SystemParametersInfo( SPI_ScreenSaverRunning, 1, @old_cad, 0 )
end; |
|
|
| В начало |
|
 |
|
|
 |
|
|
|
Цитата |
|
Просматривал топик....раньше не пробовал работать с хуками.
Откомпилировал последний код. Да. Все хорошо, клава и мышь блокируются, но после разблокировки - все что я мышью нажал и клавой написал - выполняется!! Как от этого избавиться? |
|
| В начало |
|
 |
 Шурик
Я живу тут....

Возраст: 42
Знак зодиака: 
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
|
|
|
Цитата |
|
Хороший вопросик. Даже не знаю что тут сказать, не запуская код.
Я с хуками "работал" только раз, и именно для блокировок мыши и клавиатуры. Здесь я привёл тот код, которым сам пользовался. Програмку ганяли на блокировку весьма немало, не на одной машине, и вроде не помню, чтобы было что-то из того, что ты описываешь.
Хоть наверно всё же было, в самом начале. Но что мы с этим сделали уже не помню. Может найду у себя работающие примерчики - выложу. _________________ Ответ готов, готов ли твой вопрос? |
|
| В начало |
|
 |
 Шурик
Я живу тут....

Возраст: 42
Знак зодиака: 
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
|
|
|
Цитата |
|
Вот пример блокировки клавиатуры. Мышь не блокируется, чтобы ей можно было тестировать.
Того, что ты описываешь не заметил. Правда я вспомнил, что когда мы тестировали, что-то подобное наблюдалось. У нас блокировки инициировались с соседней машины. Если в это время что-то набиралось в notepad-е, то после разблокировки это всё вываливалось из какого-то там буффера. Но на этой программе я не смог повторить подобного эффекта. _________________ Ответ готов, готов ли твой вопрос? |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Спасибо. В твоей программке все действительно работает.
Только я пока не могу понять, почему в описанном выше коде (хотя там вроде тоже самое) все-таки выполняется то, что успел за время блокировки мышкой нажать.
И еще вопрос - как сделать в том коде чтобы мышь вообще не двигалась? |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Нашел единственное отличие
function KeyHook(Code: integer; WParam: Longint; LParam: Longint) - это в коде
function KeyHook(Code: integer; WParam: Word; LParam: Longint): - это в программке.
Отличие в типе второго параметра, но зато вызов тоже происходит иначе
SetWindowsHookEx(WH_KEYBOARD, KeyHook, HInstance, 0); в коде
SetWindowsHookEx(WH_KEYBOARD, @KeyHook, HInstance, 0); в программке.
Вопрос - че делает символ "@" перед вызовом процедыры KeyHook?
З.Ы. Попробовал в коде изменить на подобие исходников, проблема осталась с действиями после разблокировки |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
| Цитата: | | че делает символ "@" перед вызовом процедыры KeyHook? |
получение адреса процедуры в твоем случае _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
|