Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-76463
OlegM
2003-03-12 11:11
2003.03.24
Как перехватить сообщение об ошибке


1-76507
Radion
2003-03-12 14:41
2003.03.24
Как в Delphi сделать разделитель?


6-76557
slippery1
2003-02-02 15:43
2003.03.24
Network


1-76470
DmitryK
2003-03-12 11:45
2003.03.24
О сплиттерах (splitters)


1-76487
veb
2003-03-11 23:24
2003.03.24
TActionMainMenuBar в MDI приложениях





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский