Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вырубание клавиатуры [D6, Win95/98, WinME, NT4, Win2k, WinXP]


maxim2 ©   (2002-12-17 13:38:00) 

Привет всем!
Типа как будто шнур выдернули только программно.


Snake   (2002-12-18 04:39:00) [1]

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

var
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 TForm1.KeyBoardOn(Sender: TObject);
begin
if OldKbHook <> 0 then begin
UnHookWindowshookEx( OldKbHook );
OldKbHook := 0;
end;
SystemParametersInfo( SPI_SETFASTTASKSWITCH, 0, 0, 0);
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, 0, 0);
end;

// выключение клавы
procedure TForm1.KeyBoardOff(Sender: TObject);
begin
SystemParametersInfo( SPI_SETFASTTASKSWITCH, 1, @Dummy, 0);
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @Dummy, 0);
OldKbHook := SetWindowsHookEx( WH_KEYBOARD, @KbHook, HInstance, 0 );
end;

Правда, под NT это тоже работает, если память не изменяет.


Song   (2002-12-17 14:14:00) [2]

Под W9x это возможно, под NT-шными лучше шнур выдёргивай.. :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо