Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.24;
Скачать: CL | DM;

Вниз

Как заблокировать клаву и мышь в ХР?   Найти похожие ветки 

 
mwolf   (2003-01-18 02:14) [0]

All.
Требуется заблокировать клаву и мышь в WinХР. Для 98 писал прогу с хуками, в ХР хуков нет, поэтому хотелось бы какие нибудь идеи по поводу как это сделать. Если кто писал в NT, может там было что-то похожее.


 
Song ©   (2003-01-18 10:09) [1]

В XP хуков нет? А куда они девались? :)


 
Vasily Terekhov   (2003-01-18 10:41) [2]

Для клавы в XP надо низкоуровневый хук ставить. Вот только Ctrl+Alt+Del все равно не удастся заблокировать :(((


 
MystiX ©   (2003-01-18 11:28) [3]

а если через реестр?


 
Song ©   (2003-01-18 18:26) [4]

Через реестр не интересно, потому что также через реестр или админские сервисы этот запрет снимается.


 
neodiX ©   (2003-01-18 18:57) [5]

Сорри mwolf.
2 Song:
а как это через реестр, может подробнее? какой путь надо искать в реестре?


 
Song ©   (2003-01-18 20:42) [6]

А зачем тебе?


 
neodiX ©   (2003-01-18 21:33) [7]

ну мне тоже надо клаву и мышь заблочить! у меня сервис будет заинсатлен с админ правами, а работать узеры будут конечно без таких прав, т.е. у меня админский сервис. Ты бы лучше не пытал бы меня, а ответил бы :)


 
Diamond Cat ©   (2003-01-19 04:44) [8]

Во интересно, у меня стоит (в хорошем смысле этого слова) XP и ловушка на клаву отлично работает, видимо она не знает что под ХР ей не положено работать, уважаемый Vasily Terekhov может подскажете мне как объяснить моей тупой ловушке , что она не должна работать под хр используя клавиатурный хук :о)


 
Diamond Cat ©   (2003-01-19 04:50) [9]

2 Song, персоональный привет, а правда, как это через реестр, если есть пример кинь на мыло плз. или примерное описание как это сделать
Diamond_cat@newmail.ru


 
Song ©   (2003-01-19 10:55) [10]

2neodiX © (18.01.03 21:33)
Используй на машинах w98, там три пальца блокируются без проблем.


 
neodiX ©   (2003-01-19 13:18) [11]

2 song
на w98 я и сам знаю что без проблем, а тут вот тема пошла про ХP, да еще и через реестр. Я уже и ДДК использовал, но дошел только до создания статических драйверов для клавы, а как дин. делать так и непонял. Ну что бы они срабатывали не после рестарта, а предположим нажав кнопельку в моей проге. Стат. драйвер я загружаю без проблем. Видно дин. надо как то по другому делать. И действительно, если у тебя есть примерчик как через реестр, будь добр скинь на мыло neodiX@mail.ru


 
Pasechnik   (2003-01-19 13:37) [12]

выполни gpedit.msc, далее > administrative templates > system > logon/logoff > disable task manager в enabled, и смотри REGMONITORом с http://www.sysinternals.com чего он там меняет.


 
R4D][   (2003-01-19 13:45) [13]

Чтобы, и клава, и мышь отрубились - используй EnableHadwareInput

P.S. Я это к тому, что, наверняка, есть специальная функция в WinAPI только для клавы.


 
neodiX ©   (2003-01-19 14:10) [14]

2 R4D][
Если ввод заблокирован, то его можно разблокировать вручную - нажать Ctrl + Alt + Del, при появлении меню "Завершение работы программы" ввод разблокируется.


 
neodiX ©   (2003-01-19 14:18) [15]

2 Pasechnik
Используя такой вариант Ctrl + Alt + Del все равно срабатывает, только в логон окне нет "Task manager", a мне надо намертво убить Ctrl + Alt + Del.


 
Song ©   (2003-01-19 15:44) [16]

Это возможно только драйвером клавиатуры.


 
neodiX ©   (2003-01-19 15:48) [17]

Как я и знал. Не, просто подумал тут че нить новое изобрели.


 
melifaro ©   (2003-01-20 05:22) [18]

Я вот тоже столкнулся с данной проблемой. Скорее с проблемой универсальности хука для 9X и NT одновременно. Пришёл вот к какому выводу - если блокировать через DLL - то проще всего определить тип ОС (NT или 9X) и отключить TaskManager тем способом, который подходит для этой ОС.
Пример:

library block;

uses
Registry,
Messages,
SysUtils,
Windows;

var
MouseHandle, HookHandle : HHook;

Function RunningWindowsNT : Boolean;
var
OSVer : TOSVERSIONINFO;
begin
OSVer.dwOSVersionInfoSize := SizeOf ( OSVERSIONINFO );
GetVersionEx ( OSVer );
Result := ( OSVer.dwPlatformId = VER_PLATFORM_WIN32_NT );
end;

procedure NTTaskMgr ( Enabled : Boolean );
Var
Reg : TRegistry;
Flag : Integer;
Begin
Case Enabled Of
True : Flag := 0;
False : Flag := 1;
End;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey ( "Software\Microsoft\Windows\CurrentVersion\Policies\System", True );
Reg.WriteInteger ( "DisableTaskMgr", Flag );
Reg.CloseKey;
Reg.Free;
End;

Procedure Win32TaskMgr ( Enabled : boolean );
Var
Old : Boolean;
Flag : Integer;

begin
Old := True;
Case Enabled of
True : Flag := 0;
False : Flag := 1;
end;
SystemParametersInfo ( SPI_SCREENSAVERRUNNING, Flag, @Old, 0 );
End;

function KeybHook( nCode : Integer; wParam : WPARAM; lParam : LPARAM ) : LRESULT; stdcall;
begin
nCode := 0;
end;

function myMouseHook( nCode : Integer; wParam : WPARAM; lParam : LPARAM ) : LRESULT; stdcall;
begin
nCode := 0;
end;

function BlockKeyboard : Bool; stdcall;
Var
Old : Boolean;
begin
Old := True;
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @old, 0 );
if Result then HookHandle := SetWindowsHookEx( WH_KEYBOARD, KeybHook, HInstance, 0 );
Case RunningWindowsNT of
True : NTTaskMgr ( False );
False : Win32TaskMgr ( False );
End;
end;

function BlockMouse : Bool; stdcall;
Var
Rect : TRect;
aRect : PRect;
P : TPoint;

Begin
ShowCursor( False );
GetCursorPos ( P );
Rect.Left := P.X;
Rect.Top := P.Y;
Rect.Right := P.X + 1;
Rect.Bottom := P.Y + 1;
aRect := @Rect;
ClipCursor( aRect );
if Result then MouseHandle := SetWindowsHookEx( WH_MOUSE, myMouseHook, HInstance, 0 );
end;

procedure UnBlockKeyboard; stdcall;
Var
Old : Boolean;
begin
Old := true;
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, @old, 0 );
UnhookWindowsHookEx( HookHandle );
Case RunningWindowsNT of
True : NTTaskMgr ( True );
False : Win32TaskMgr ( True );
End;
end;

procedure UnBlockMouse; stdcall;
Begin
ShowCursor( True );
ClipCursor( Nil );
UnhookWindowsHookEx( MouseHandle )
end;

exports
BlockMouse,
UnBlockMouse,
BlockKeyboard,
UnBlockKeyboard;

Begin
end.


Это конечно грубо, но работает и под 95/98/ME/NT/2k/XP


 
Acidy ©   (2003-01-29 05:59) [19]

А если сделать монитор запуска приложений (в отдельном процессе) и не давать запуститься TaskManager...


 
Игорь Шевченко ©   (2003-01-29 09:43) [20]


> А если сделать монитор запуска приложений (в отдельном процессе)
> и не давать запуститься TaskManager...


Тогда люди возьмут Process Explorer, выявят вредную программу и убьют ее.
Впрочем, для выявления можно воспользоваться и программой из кладовки QuerySystemInformation, которая показывает список всех-всех процессов :-)))


 
DVM ©   (2003-01-29 11:57) [21]


> Тогда люди возьмут Process Explorer, выявят вредную программу
> и убьют ее.

добавить штук 7 процессов которые будут следить за программой - все вместе убить очень затруднительно :)


 
Игорь Шевченко ©   (2003-01-29 13:52) [22]

DVM © (29.01.03 11:57)

> добавить штук 7 процессов которые будут следить за программой
> - все вместе убить очень затруднительно :)


Во-первых, и это не затруднительно.
Во-вторых, может сразу свою ОС написать, в которой нельзя будет снимать программы? Лучше всего, на мой взгляд.


 
DVM ©   (2003-01-29 14:45) [23]


> Во-первых, и это не затруднительно.

Да, конечно же написать еще одну программу, и зная названия процессов прибивать их один за другим.
Прибить одновременно невозможно. А если они будут следить еще и друг за другом и запускать друг друга вновь?
Запустить мгновенно правда тоже не получится.
Вообще это пустой разговор, т.к. надо отталкиваться от конкретных условий в которых это будет все работать.


 
Игорь Шевченко ©   (2003-01-29 15:24) [24]


> Прибить одновременно невозможно


Элементарно, Ватсон. Свен Шрайбер - недокументированные возможности Windows 2000


 
DVM ©   (2003-01-29 15:41) [25]

Да конечно же надо знать и названия процессов, а если их хитро назвать, то тому кто будет все это ломать будет затруднительно найти нужные процессы.
Насчет одновременности у меня большое сомнение - процессор выполняет инструкции последовательно и одновременно ничего на PC не бывает (многопроцессорные не в счёт).


 
Игорь Шевченко ©   (2003-01-29 16:46) [26]

DVM © (29.01.03 15:41)

Книжечку почитай, потом продолжим дискуссию :-)


 
DVM ©   (2003-01-29 16:49) [27]


> Игорь Шевченко

Нет у меня такой книжечки:(
Может в онлайне где завалялась?



Страницы: 1 вся ветка

Текущий архив: 2003.03.24;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.022 c
3-76365
SKing
2003-03-06 13:09
2003.03.24
Открытие запороленной mdb?


1-76431
Юров Владимир
2003-03-10 22:14
2003.03.24
PHP&Delphi


3-76265
Вопрошающий
2003-03-05 17:34
2003.03.24
Проверка подключения ADOConnection.


3-76366
PVOzerski
2003-03-06 10:38
2003.03.24
Нужна разумная идея


1-76388
AlexanderSK
2003-03-12 13:00
2003.03.24
Проблемы с OnMouseEnter и OnMouseLeave