Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.028 c
2-1163429058
Busik
2006-11-13 17:44
2006.12.03
Прошу помощи с ZipForge


15-1163706435
Колдун
2006-11-16 22:47
2006.12.03
Конвертация аудио


6-1152261039
Alexey_
2006-07-07 12:30
2006.12.03
Задержка при подключении через сокетные компоненты


3-1159550644
Kley
2006-09-29 21:24
2006.12.03
Exel&Delphi


9-1139388127
Creative
2006-02-08 11:42
2006.12.03
Save/Load




   Наверх