Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.03;
Скачать: CL | DM;

Вниз

Отловить нажатие кнопок на клавиатуре   Найти похожие ветки 

 
Монгол   (2006-11-15 17:47) [0]

Помогите чайнику!!!Как можно отловить нажатие кнопок на клавиатуре и сохранить их в текстовый файл?
Нужен пример. Заранее спасибо.


 
Array ©   (2006-11-15 17:51) [1]

google + hook

http://delphiworld.narod.ru/base/set_hook.html


 
Rouse_ ©   (2006-11-15 17:53) [2]

Из Мемо в файл думаю сумеешь скинуть?

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Memo1: TMemo;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

var
 hHook: THandle;

{$R *.dfm}

function LowLevelKeyboardProc(nCode: Integer;
 WParam: WPARAM; LParam: LPARAM): LRESULT stdcall;
type
 PKbdDllHookStrukt = ^TKbdDllHookStrukt;
 _KBDLLHOOKSTRUCT = record
   vkCode: DWORD;
   scanCode: DWORD;
   flags: DWORD;
   time: DWORD;
   dwExtraInfo: PDWORD;
 end;
 TKbdDllHookStrukt = _KBDLLHOOKSTRUCT;

const
 RPT_WPARAM_DATA = "Keyboard message = %s ";
 RPT_LPARAM_DATA = "scan code = %s [%d]";
var
 StrResult: String;
begin
 StrResult := "";
 if nCode = HC_ACTION then
   Result := CallNextHookEx(hHook, nCode, WParam, LParam);
 case WParam of
   WM_KEYDOWN: StrResult := Format(RPT_WPARAM_DATA, ["WM_KEYDOWN"]);
   WM_KEYUP: StrResult := Format(RPT_WPARAM_DATA, ["WM_KEYUP"]);
   WM_SYSKEYDOWN: StrResult := Format(RPT_WPARAM_DATA, ["WM_SYSKEYDOWN"]);
   WM_SYSKEYUP: StrResult := Format(RPT_WPARAM_DATA, ["WM_SYSKEYUP"]);
 end;

 StrResult := StrResult + Format(RPT_LPARAM_DATA, [
   Chr(PKbdDllHookStrukt(LParam)^.vkCode), PKbdDllHookStrukt(LParam)^.vkCode]);
 Form1.Memo1.Lines.Add(StrResult);
end;

procedure TForm1.FormCreate(Sender: TObject);
const
 WH_KEYBOARD_LL = 13;
begin
 hHook := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
 if hHook = 0 then RaiseLastOSError;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 if not UnhookWindowsHookEx(hHook) then RaiseLastOSError;
end;

end.



Страницы: 1 вся ветка

Текущий архив: 2006.12.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.059 c
2-1163360378
pavels777
2006-11-12 22:39
2006.12.03
Распознование Текста с сканера!


15-1163143100
Jeer
2006-11-10 10:18
2006.12.03
Вирус


15-1163756467
Rule
2006-11-17 12:41
2006.12.03
Откуда блин брекпоинт, достал уже меня ...


2-1163679128
KyRo
2006-11-16 15:12
2006.12.03
Почему нет конекта ?


2-1163429058
Busik
2006-11-13 17:44
2006.12.03
Прошу помощи с ZipForge