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

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

Keyboard hook [D6, Win95/98, Win2k]


aaZ ©   (2002-06-22 18:19:00) 


Var HookHandle:hHook;
CharsInputed:String="";

Function KeyboardProc(Code: integer; WParam: WParam; LParam: LParam): LResult; stdcall;
Type TWParamTranslation=Record
Byte12:Word;
Byte3:Byte;
Byte4:Byte;
End;

Begin
If TWParamTranslation(LParam).Byte4 and 128<>0 Then
CharsInputed:=CharsInputed+Chr(WParam);
End;

Procedure StartHook; //Стартует перхват клавиатуры
Begin
CharsInputed:="";
HookHandle := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, Hinstance, 0);
End;

Procedure StopHook;
Begin
UnhookWindowsHookEx(HookHandle);
End;


В принципе работает, только эта процедура перехватывает событие и не передает его далее, т.е. клавиатура как бы недоступна для других приложений... И еще, если это приложение не активно, то Винда на время подвешивается и закрывается парочка окошек или программ. Кто-нибудь знает, как этого избежать?


Андрей Штим   (2002-07-05 09:53:00) [1]

Попробуй все запихать в dll


aaZ   (2002-06-29 01:04:00) [2]

Так что делать :(???


Sasha9   (2002-06-24 19:02:00) [3]

условие If TWParamTranslation(LParam).Byte4 and 128<>0 Thenбудет выполняться всегда т.к. дельфи - не си и 128 - не 0


aaZ   (2002-06-24 00:43:00) [4]

А почему окна закрываются?


easy   (2002-06-22 18:47:00) [5]

CallNextHookEx

см: http://delphi.mastak.ru/articles/hooks/index.html


Наверх

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