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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2007, 10:51   #1
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
Плохо Клава&мышь

Как заблокировать клаву и мышь и на оборот
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 22.08.2007, 11:01   #2
UnD)eaD)Snake
Форумчанин Подтвердите свой е-майл
 
Аватар для UnD)eaD)Snake
 
Регистрация: 07.07.2007
Сообщений: 241
По умолчанию

вот про клаву нарыл:

// используемые переменные
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, то можно выключать таким образом мышь :-)
UnD)eaD)Snake вне форума Ответить с цитированием
Старый 22.08.2007, 15:17   #3
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

BlockInput
still_alive вне форума Ответить с цитированием
Старый 22.08.2007, 15:29   #4
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

//Выключение курсора
procedure TForm1.Button1Click(Sender: TObject);
var
CState: Integer;
begin
CState := ShowCursor(True);
while Cstate >= 0 do Cstate := ShowCursor(False);
end;
//Включениекурсора
procedure TForm1.Button2Click(Sender: TObject);
var
Cstate: Integer;
begin
Cstate := ShowCursor(True);
while CState < 0 do
CState := ShowCursor(True);
end;

Последний раз редактировалось Aleksandr; 22.08.2007 в 15:31.
Aleksandr вне форума Ответить с цитированием
Старый 23.08.2007, 15:18   #5
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

ВСЕМ БОЛЬШОЕ СПАСИБО

Цитата:
Сообщение от still_alive Посмотреть сообщение
BlockInput
Это как понять?
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 23.08.2007, 15:33   #6
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

UnD)eaD)Snake, ты лучше бы ссылку дал на delphiworld или drkb, это полезней для спрашивающего...
А понять так: The BlockInput function blocks keyboard and mouse input events from reaching applications.
still_alive вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мышь Михаил Юрьевич Общие вопросы Delphi 8 09.06.2008 11:23
Уматная мышь Sibedir Свободное общение 8 21.01.2008 15:27
мышь хвостатая... Аlex Win Api 14 18.01.2008 00:30
Клава масдай!!! Tech07 Общие вопросы Delphi 5 26.08.2007 10:39
Мышь kl45gp Общие вопросы Delphi 7 16.06.2007 22:47