Главная страница
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.074 c
15-1163474121
Slider007
2006-11-14 06:15
2006.12.03
С днем рождения ! 14 ноября


3-1159511205
vodvorezlaya
2006-09-29 10:26
2006.12.03
Продолжение поиска Locate


15-1163285673
lookin
2006-11-12 01:54
2006.12.03
ISO - напомните плз, какой программой его можно превратить в AVI


1-1161237851
_Mouse_
2006-10-19 10:04
2006.12.03
Проблема с TStringGrid


2-1163597749
КлЯкСа
2006-11-15 16:35
2006.12.03
Как закрыть список DBLookupCombo?