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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2007, 18:49   #1
Tech07
 
Регистрация: 10.08.2007
Сообщений: 4
По умолчанию Клава масдай!!!

Привет всем. Люди, как можно запретить нажатие любой клавиши на клавиатуре(можно ли при этом не юзать Hookи ) или вообще её отключить?
Tech07 вне форума Ответить с цитированием
Старый 25.08.2007, 19:14   #2
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

// используемые переменные
var
Dummy: integer = 0;
OldKbHook: HHook = 0;

implementation

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 TForm1.KeyBoardOn(Sender: TObject);
begin
if OldKbHook <> 0 then
begin
UnHookWindowshookEx(OldKbHook);
OldKbHook := 0;
end;
SystemParametersInfo(SPI_SETFASTTAS KSWITCH, 0, 0, 0);
SystemParametersInfo(SPI_SCREENSAVE RRUNNING, 0, 0, 0);
end;

// выключение клавы

procedure TForm1.KeyBoardOff(Sender: TObject);
begin
SystemParametersInfo(SPI_SETFASTTAS KSWITCH, 1, @Dummy, 0);
SystemParametersInfo(SPI_SCREENSAVE RRUNNING, 1, @Dummy, 0);
OldKbHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0);
end;




Некоторые замечания по поводу этих процедур:

Если программу упаковать UPX-ом - клава не будет отключаться (причин не знаю).
В ДОС-окне клава будет работать (FAR, VC и т.п.)
Состояния клавиш NumLock,CapsLock,ScrollLock не отслеживаются и могут быть изменены.
Возможно EnableHardwareKeyboard более эффективен и прост, но я тоже, к сожалению, не знаю, как им пользоваться.
Если вместо WH_KEYBOARD поставить WH_MOUSE, то можно выключать таким образом мышь :-)
Жить тоже вредно, от этого умирают!!!
Demien вне форума Ответить с цитированием
Старый 25.08.2007, 22:59   #3
Tech07
 
Регистрация: 10.08.2007
Сообщений: 4
По умолчанию

Cпасибо Demien за представленный код. Но клаву отключить полностью не удается. Срабативают комбинации ctrl+alt+del, ctrl+esc, alt+f4 и тд.
Может как-то отключить ctrl и alt?
Tech07 вне форума Ответить с цитированием
Старый 25.08.2007, 23:36   #4
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

Попробуй это:

// Включение режима
SystemParametersInfo(SPI_SCREENSAVE RRUNNING, 1, 0, 0);
// Выключение режима
SystemParametersInfo(SPI_SCREENSAVE RRUNNING, 0, 0, 0);

Должно получиться!
Жить тоже вредно, от этого умирают!!!
Demien вне форума Ответить с цитированием
Старый 26.08.2007, 05:06   #5
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

Цитата:
Сообщение от Tech07 Посмотреть сообщение
Cпасибо Demien за представленный код. Но клаву отключить полностью не удается. Срабативают комбинации ctrl+alt+del, ctrl+esc, alt+f4 и тд.
Может как-то отключить ctrl и alt?
Чувак, есть простой и в тоже верный совет, запоминай: ПРАВОЙ РУКОЙ ВЫДЕРАЕШЬ ШНУР КЛАВЫ ИЗ СИСТЕМНИКА... Это конечно работает на УРА...хи-хи
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума Ответить с цитированием
Старый 26.08.2007, 10:39   #6
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Demien, я конечно понимаю, что DelphiWorld это неплохой ресурс, но копировать бездумно оттуда все не есть хорошо, ибо этот трюк с экранной заставкой работает только под 9х.
Надо править реестр и регистрировать горячие клавиши.
Знаешь, KORT, левой тоже вроде работает
still_alive вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клава&мышь MAcK Win Api 5 23.08.2007 15:33