J
jh_muse
Unregistered / Unconfirmed
GUEST, unregistred user!
unit Main;<br><br>interface<br><br>uses<br> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br> Dialogs, StdCtrls;<br><br>type<br> TForm1 = class(TForm)<br> Label1: TLabel;<br> Label2: TLabel;<br> Edit1: TEdit;<br> Edit2: TEdit;<br> Button1: TButton;<br> Button2: TButton;<br> ListBox1: TListBox;<br> Edit3: TEdit;<br> Label3: TLabel;<br> Edit4: TEdit;<br> Label4: TLabel;<br> Button3: TButton;<br> procedure FormCreate(Sender: TObject);<br> procedure Button1Click(Sender: TObject);<br> procedure Button2Click(Sender: TObject);<br> procedure ListBox1DblClick(Sender: TObject);<br> procedure Edit1Change(Sender: TObject);<br> procedure Edit1KeyPress(Sender: TObject; var Key: Char);<br> procedure Button3Click(Sender: TObject);<br> private<br> function keyhookresult(lp:integer;wp:integer)char;<br><br> { Private declarations }<br> public<br> { Public declarations }<br> end;<br><br>var<br> Form1: TForm1;<br> hookkey:string;<br> hooktimes:word;<br> hhook:integer;<br><br> PbFlowContrNo:String;<br><br><br> function HookProc(iCode:integer;wParam:wParam;lparam:lParam):LResult;stdcall;<br>implementation<br><br>{$R *.dfm}<br><br>function tform1.keyhookresult(lp:integer;wP:integer)char;<br>begin<br> result:='[Print Screen]';<br> case lp of<br> 14354:result:='[Alt]';<br> 10688:result:='`';<br> 561:result:='1';<br> 818:result:='2';<br> 1075:result:='3';<br> 1332:result:='4';<br> 1589:result:='5';<br> 1846:result:='6';<br> 2103:result:='7';<br> 2360:result:='8';<br> 2617:result:='9';<br> 2864:result:='0';<br> 3261:result:='-';<br> 3515:result:='=';<br> 4177:result:='Q';<br> 4439:result:='W';<br> 4677:result:='E';<br> 4946:result:='R';<br> 5204:result:='T';<br> 5465:result:='Y';<br> 5717:result:='U';<br> 5961:result:='I';<br> 6223:result:='O';<br> 6480:result:='P';<br> 6875:result:='[';<br> 7133:result:=']';<br> 11228:result:='/';<br> 7745:result:='A';<br> 8019:<br> showmessage ('ok'); {这句是我做的修改可是运行时像死机一样不知道为什么<br> 如果在这里form.show也不行,好想不能打开其它窗口, 否则键盘和鼠标就没有响应}<br><br> 8260:result:='D';<br> 8518:result:='F';<br> 8775:result:='G';<br> 9032:result:='H';<br> 9290:result:='J';<br> 9547:result:='K';<br> 9804:result:='L';<br> 10170:result:=';';<br> 10462:result:='''';<br> 11354:result:='Z';<br> 11608:result:='X';<br> 11843:result:='C';<br> 12118:result:='V';<br> 12354:result:='B';<br> 12622:result:='N';<br> 12877:result:='M';<br> 13244:result:=',';<br> 13502:result:='.';<br> 13759:result:='/';<br> 13840:result:='[Right_Shift]';<br> 14624:result:='[Space]';<br> 283:result:='[Esc]';<br> 15216:result:='F1';<br> 15473:result:='F2';<br> 15730:result:='F3';<br> 15987:result:='F4';<br> 16244:result:='F5';<br> 16501:result:='F6';<br> 16758:result:='F7';<br> 17015:result:='F8';<br> 17272:result:='F9';<br> 17529:result:='F10';<br> 22394:result:='F11';<br> 22651:result:='F12';<br> 10768:result:='[Left-Shift]';<br> 14868:result:='CapsLock';<br> 3592:result:='BackSpace';<br> 3849:result:='Tab';<br> 7441:<br> IF wp > 30000 then<br> result:='[Right-Ctrl]'<br> else<br> result:='[Left-Ctrl]';<br> 13679:result:='[Num]/';<br> 17808:result:='[NumLock]';<br> 300:result:='[Print Screen]';<br> 18065:result:='[Scroll Lock]';<br> 17683:result:='[Pause]';<br> 21088:result:='[Num]0';<br> 21358:result:='[Num].';<br> 20321:result:='[Num]1';<br> 20578:result:='[Num]2';<br> 20835:result:='[Num]3';<br> 19300:result:='[Num]4';<br> 19557:result:='[Num]5';<br> 19814:result:='[Num]6';<br> 18279:result:='[Num]7';<br> 18536:result:='[Num]8';<br> 18793:result:='[Num]9';<br> 19468:result:='*5*';<br> 14186:result:='[Num]*';<br> 19053:result:='[Num]-';<br> 20075:result:='[Num]+';<br> 21037:result:='[Insert]';<br> 21294:result:='[Delete]';<br> 18212:result:='[Home]';<br> 20259:result:='[End]';<br> 18721:result:='[PageUp]';<br> 20770:result:='[PageDown]';<br> 18470:result:='[Up]';<br> 20520:result:='[Down]';<br> 19237:result:='
';<br> 19751:result:='
';<br> 7181:result:='[Enter]';<br>end;<br>end;<br><br>function HookProc(iCode:integer;wParam:wParam;lparam:lParam):LResult;stdcall;<br>var<br> s:string;<br>begin<br> if (PEventMsg(lparam)^.message = WM_KEYDOWN) then<br> begin<br> s:=format('Down:%5d %5d ',<br> [PEventMsg(lParam)^.paraml,peventMsg(lparam)^.paramh])+<br> form1.keyhookresult(peventmsg(lparam)^.paraml,<br> peventmsg(lparam)^.paramh);<br> form1.listbox1.items.Add(s);<br> if peventmsg(lparam)^.paraml = 8019 then<br> if PbFlowContrNo [2] = '0' then<br> form1.Edit4.text := '0:'+PbFlowContrNo+'-----'+'s';<br> if PbFlowContrNo [2] = '6' then<br> form1.Edit4.Text := '6:'+PbFlowContrNo+'-----'+'s';<br> end<br> else if (peventmsg(lparam)^.message = WM_KEYUP) then<br> begin<br> s:=format(' Up:%5d %5d ',<br> [peventmsg(lparam)^.paraml,peventmsg(lparam)^.paramh])+<br> form1.keyhookresult(peventmsg(lparam)^.paraml,<br> peventMsg(lparam)^.paramh);<br> form1.listbox1.items.add(s);<br> end;<br>end;<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br> hooktimes:=0;<br> hHook:=0;<br> PbFlowContrNo:= '10000';<br> edit3.text := '10000'<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br> inc(hooktimes);<br> if hooktimes = 1 then<br> begin<br> hookkey:=Timetostr(now)+' ';<br> hHook:=setwindowshookex(WH_KEYBOARD,hookproc,hinstance,0);<br> MessageBox(0,'键盘监视启动','信息',MB_ICONINFORMATION+MB_OK);<br> END;<br>end;<br><br>procedure TForm1.Button2Click(Sender: TObject);<br>begin<br> UnHookWindowsHookEx(hHook);<br> hHook:=0;<br> if hooktimes<>0 then<br> begin<br> messageBox(0,'键盘监视关闭','信息',MB_ICONINFORMATION+MB_OK);<br> end;<br> hooktimes:=0;<br>end;<br><br>procedure TForm1.ListBox1DblClick(Sender: TObject);<br>begin<br> listbox1.Clear;<br>end;<br><br>procedure TForm1.Edit1Change(Sender: TObject);<br>var<br> i:dword;<br>begin<br> if length(edit1.Text)<>1 then exit;<br> i:=mapvirtualkey(ord(edit1.text[1]),0);<br> edit2.text:=format('%d%x',[i,i]);<br>end;<br><br>procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);<br>begin<br> edit1.Text := '';<br>end;<br><br>procedure TForm1.Button3Click(Sender: TObject);<br>begin<br> PbFlowContrNo:= edit3.text;<br>end;<br><br>end.