Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2007, 21:02   #1
=LeonZone=
Форумчанин
 
Аватар для =LeonZone=
 
Регистрация: 15.08.2007
Сообщений: 118
Сообщение Блокирование клавиатуры и мыши

Я пишу клиент-серверное приложение по ограничению доступа...
Мне нужно заблокировать клавиатуру и мышь. Причем полностью, чтобы и CTRL+ALT+DELETE тоже не работал!
Программа должна работать без прав администратора)
=LeonZone= вне форума Ответить с цитированием
Старый 22.09.2007, 22:41   #2
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

поищи по форуму по слову Hook. Или скачай drkb.chm и возьми готовые примеры.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 23.09.2007, 10:16   #3
=LeonZone=
Форумчанин
 
Аватар для =LeonZone=
 
Регистрация: 15.08.2007
Сообщений: 118
По умолчанию

2 Shuraken
На форуме ничего толкового не нашёл, а drkb.chm весит 5.68MB... Я скачать не с могу(сижу на GPRSе)
Может ты выложишь готовый примерчик? Заранее благодарен)
=LeonZone= вне форума Ответить с цитированием
Старый 23.09.2007, 10:23   #4
=LeonZone=
Форумчанин
 
Аватар для =LeonZone=
 
Регистрация: 15.08.2007
Сообщений: 118
Смех

Вот как делал я:
В переменные Dummy: integer = 0; и OldKbHook: HHook = 0;
Код:
function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall;
begin
  if code < 0 then
    Result := CallNextHookEx(oldKbHook, code, wparam, lparam)
  else
    Result := 1;
end;

procedure Block;
begin
SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @Dummy, 0);
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @Dummy, 0);
OldKbHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0);
SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @Dummy, 0);
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @Dummy, 0);
OldKbHook := SetWindowsHookEx(WH_MOUSE , @KbHook, HInstance, 0);
end;

procedure UnBlock;
begin
UnhookWindowsHookEx(OldKbHook);
end;
Но: 1) Иногда не срабатывает
2) Не блокирует CTRL+ALT+DELETE
=LeonZone= вне форума Ответить с цитированием
Старый 23.09.2007, 10:45   #5
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

var
i : integer;
begin
i := 0;
{запрещаем Ctrl-Alt-Del}
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @i, 0);
end.
// необходим unit WinProcs

Вы можете использовать ф-ию BlockInput. Она живёт в user32.dll Также она блокирует одновременно и мышь.
Procedure BlockInput(ABlockInput : Boolean); stdcall; external 'USER32.DLL';
BlockInput(True); - заблокировать
BlockInput(False); - разблокировать
Однако имейте ввиду, что BlockInput() не заблокирует CAD

Кроме того, для блокировки, мы можем использовать некоторые недокументированные возможности, однако их недастаток в том, что обратно клавиатуру/мышь уже включить нельзя:



"rundll32 keyboard,disable" - заблокироовать клавиатуру

"rundll32 mouse,disable" - заблокировать мышь



Запустить эти команды мы можем самое простое через ShellExecute() или WinExec():

ShellExecute(Application.Handle,'op en','C:\Windows\Rundll32.exe',

'команда','C:\Windows',SW_HIDE);


На, копайся.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 23.09.2007, 10:54   #6
=LeonZone=
Форумчанин
 
Аватар для =LeonZone=
 
Регистрация: 15.08.2007
Сообщений: 118
По умолчанию

Спасибо! Буду пробовать)

Только Ctrl-Alt-Del(в самом верху сообщ) всё равно не блокирует!!!
=LeonZone= вне форума Ответить с цитированием
Старый 23.09.2007, 11:01   #7
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

ctrl+alt+del заблокировать не удастся никак. Если, конечно, не перепишешь ядро винды или не напишешь свои дрова для клавиатуры.
Можно, конечно, поменять параметр в реестре, но это уже не блокировка.
still_alive вне форума Ответить с цитированием
Старый 23.09.2007, 12:27   #8
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

Перейдите по ссылке и скачайте Delphi глазами хакера. Там приводится хороший пример
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума Ответить с цитированием
Старый 23.09.2007, 12:32   #9
=LeonZone=
Форумчанин
 
Аватар для =LeonZone=
 
Регистрация: 15.08.2007
Сообщений: 118
По умолчанию

Там же для 98 винды... А мне в ХР надо)
=LeonZone= вне форума Ответить с цитированием
Старый 24.09.2007, 15:11   #10
BLACK_KOT
 
Регистрация: 16.04.2007
Сообщений: 4
По умолчанию

отключить контр-альт-делит неудастся, но можно не дать ему работать:

ставиш на форму таймер, интервал:=1, и каждую тысячную долю секудны отправляется сообщение, закрывающее это ненависное окошко:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
PostMessage(FindWindow(nil,'Диспетч ер задач Windows'),WM_CLOSE,0,0)
end;


а можно поиздеваться над ламером и сделать диспетчер устройств просто неактивным:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
EnableWindow(FindWindow(nil,'Диспет чер задач Windows'),false)
end;

сделать активным:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
EnableWindow(FindWindow(nil,'Диспет чер задач Windows'),true)
end;

элементарно.
BLACK_KOT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
блокировка клавиатуры и мыши Var17 Win Api 6 14.04.2008 15:30
Блокирование клавиатуры Milly Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 18.10.2007 19:15
блокирование функции Fireleo Win Api 5 29.07.2007 17:04
Блокирование при работе с TList. Riman Общие вопросы Delphi 7 31.05.2007 15:28
Блокирование других программ ar4i Общие вопросы Delphi 5 12.12.2006 14:59