Форум: "WinAPI";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];
ВнизКак заблокировать клаву и мышь в ХР? Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.009 c