Главная страница
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.037 c
2-1163538396
Zanci
2006-11-15 00:06
2006.12.03
Про юзов


2-1163761902
bng
2006-11-17 14:11
2006.12.03
SpeedButton +handle


15-1163540555
PHPDeveloper
2006-11-15 00:42
2006.12.03
TV тюнер


4-1153379764
Misha Uskov
2006-07-20 11:16
2006.12.03
Описание сервиса


1-1161800306
MishaL
2006-10-25 22:18
2006.12.03
TListView. Columns не меняет ширину при изменении текста