首页  编辑  

Key Hook的键盘扫描代码

Tags: /超级猛料/Hook.钩子/   Date Created:

来自:jbas, 时间:2002-1-24 15:42:00, ID:882324 [显示:小字体 | 大字体]  

这是一个hook程序的一部分!我想知道下面的EvnMsg.paramL=20520这个"20520"怎样的到的

,如果我想监视a,b,1,2这样的数,那个evnmsg.paraml=???;哪有介绍呀。delphi找不到那个20520的定义

谢谢!

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

var EvnMsg:TEventMsg;

begin

  EvnMsg:=PEventMsg(lParam)^;

  if EvnMsg.message=WM_KEYDOWN then

  begin

    if EvnMsg.paramL=20520 then      //'↓'键被按下

     showmessage('↓');

  end;

end;

来自:zhangkan, 时间:2002-1-24 16:50:00, ID:882547

找到的一点,但因为周围没有相关的书和资料,不能给你好的解释.呵呵,这会儿也没时间.

不过,你可以参考这些键值了.出自jingtao.

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.