![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как заблокировать клаву и мышь в ХР? [D5, D6, WinXP]
mwolf © (2003-01-18 02:14:00)All.
Требуется заблокировать клаву и мышь в WinХР. Для 98 писал прогу с хуками, в ХР хуков нет, поэтому хотелось бы какие нибудь идеи по поводу как это сделать. Если кто писал в NT, может там было что-то похожее.
DVM (2003-01-29 16:49:00) [1]
> Игорь Шевченко
Нет у меня такой книжечки:(
Может в онлайне где завалялась?
Игорь Шевченко (2003-01-29 16:46:00) [2]DVM © (29.01.03 15:41)
Книжечку почитай, потом продолжим дискуссию :-)
DVM (2003-01-29 15:41:00) [3]Да конечно же надо знать и названия процессов, а если их хитро назвать, то тому кто будет все это ломать будет затруднительно найти нужные процессы.
Насчет одновременности у меня большое сомнение - процессор выполняет инструкции последовательно и одновременно ничего на PC не бывает (многопроцессорные не в счёт).
Игорь Шевченко (2003-01-29 15:24:00) [4]
> Прибить одновременно невозможно
Элементарно, Ватсон. Свен Шрайбер - недокументированные возможности Windows 2000
DVM (2003-01-29 14:45:00) [5]
> Во-первых, и это не затруднительно.
Да, конечно же написать еще одну программу, и зная названия процессов прибивать их один за другим.
Прибить одновременно невозможно. А если они будут следить еще и друг за другом и запускать друг друга вновь?
Запустить мгновенно правда тоже не получится.
Вообще это пустой разговор, т.к. надо отталкиваться от конкретных условий в которых это будет все работать.
Игорь Шевченко (2003-01-29 13:52:00) [6]DVM © (29.01.03 11:57)
> добавить штук 7 процессов которые будут следить за программой
> - все вместе убить очень затруднительно :)
Во-первых, и это не затруднительно.
Во-вторых, может сразу свою ОС написать, в которой нельзя будет снимать программы? Лучше всего, на мой взгляд.
DVM (2003-01-29 11:57:00) [7]
> Тогда люди возьмут Process Explorer, выявят вредную программу
> и убьют ее.
добавить штук 7 процессов которые будут следить за программой - все вместе убить очень затруднительно :)
Игорь Шевченко (2003-01-29 09:43:00) [8]
> А если сделать монитор запуска приложений (в отдельном процессе)
> и не давать запуститься TaskManager...
Тогда люди возьмут Process Explorer, выявят вредную программу и убьют ее.
Впрочем, для выявления можно воспользоваться и программой из кладовки QuerySystemInformation, которая показывает список всех-всех процессов :-)))
Acidy (2003-01-29 05:59:00) [9]А если сделать монитор запуска приложений (в отдельном процессе) и не давать запуститься TaskManager...
melifaro (2003-01-20 05:22:00) [10]Я вот тоже столкнулся с данной проблемой. Скорее с проблемой универсальности хука для 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
neodiX (2003-01-19 15:48:00) [11]Как я и знал. Не, просто подумал тут че нить новое изобрели.
Song (2003-01-19 15:44:00) [12]Это возможно только драйвером клавиатуры.
neodiX (2003-01-19 14:18:00) [13]2 Pasechnik
Используя такой вариант Ctrl + Alt + Del все равно срабатывает, только в логон окне нет "Task manager", a мне надо намертво убить Ctrl + Alt + Del.
neodiX (2003-01-19 14:10:00) [14]2 R4D][
Если ввод заблокирован, то его можно разблокировать вручную - нажать Ctrl + Alt + Del, при появлении меню "Завершение работы программы" ввод разблокируется.
R4D][ (2003-01-19 13:45:00) [15]Чтобы, и клава, и мышь отрубились - используй EnableHadwareInput
P.S. Я это к тому, что, наверняка, есть специальная функция в WinAPI только для клавы.
Pasechnik (2003-01-19 13:37:00) [16]выполни gpedit.msc, далее > administrative templates > system > logon/logoff > disable task manager в enabled, и смотри REGMONITORом с http://www.sysinternals.comчего он там меняет.
neodiX (2003-01-19 13:18:00) [17]2 song
на w98 я и сам знаю что без проблем, а тут вот тема пошла про ХP, да еще и через реестр. Я уже и ДДК использовал, но дошел только до создания статических драйверов для клавы, а как дин. делать так и непонял. Ну что бы они срабатывали не после рестарта, а предположим нажав кнопельку в моей проге. Стат. драйвер я загружаю без проблем. Видно дин. надо как то по другому делать. И действительно, если у тебя есть примерчик как через реестр, будь добр скинь на мыло neodiX@mail.ru
Song (2003-01-19 10:55:00) [18]2neodiX © (18.01.03 21:33)
Используй на машинах w98, там три пальца блокируются без проблем.
Diamond Cat (2003-01-19 04:50:00) [19]2 Song, персоональный привет, а правда, как это через реестр, если есть пример кинь на мыло плз. или примерное описание как это сделать
Diamond_cat@newmail.ru
Diamond Cat (2003-01-19 04:44:00) [20]Во интересно, у меня стоит (в хорошем смысле этого слова) XP и ловушка на клаву отлично работает, видимо она не знает что под ХР ей не положено работать, уважаемый Vasily Terekhov может подскажете мне как объяснить моей тупой ловушке , что она не должна работать под хр используя клавиатурный хук :о)