Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
Монгол   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.041 c
4-1153033422
apic
2006-07-16 11:03
2006.12.03
работа с железом


15-1163424454
wal
2006-11-13 16:27
2006.12.03
IE + data: url


15-1163428818
AntiUser
2006-11-13 17:40
2006.12.03
Возможна ли смена IP на имя?


11-1140002148
KingMidas
2006-02-15 14:15
2006.12.03
SQLLite


15-1163429075
oldman
2006-11-13 17:44
2006.12.03
Российская хоккейная сборная выиграла второй кубок Евротура.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский