计算机二级DELPHI函数:Hook技术实现键盘监控计算机二级考试

文章作者 100test 发表时间 2009:05:02 15:09:12
来源 100Test.Com百考试题网


  2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
  在许多系统中,出于安全或其它原因,常常要求随时对键盘进行监控,一个专业的监控程序必须具备两点,一是实时;二是作为指示图标运行。实际应用中把利用Hook(即钩子)技术编写的应用程序添加到Windows的任务栏的指示区中就能够很好的达到这个目的。我在参考了API帮助文档基础上,根据在Delphi开发环境中的具体实现分别对这两部分进行详细论述。
  一、Hook(钩子)的实现:
  Hook是应用程序在Microsoft Windows 消息处理过程中设置的用来监控消息流并且处理系统中尚未到达目的窗口的某一类型消息过程的机制。如果Hook过程在应用程序中实现,若应用程序不是当前窗口时,该Hook就不起作用;如果Hook在DLL中实现,程序在运行中动态调用它,它能实时对系统进行监控。根据需要,我们采用的是在DLL中实现Hook的方式。
  1.新建一个导出两个函数的DLL文件,在hookproc.pas中定义了钩子具体实现过程。代码如下:
  library keyspy.
  uses
  windows, messages, hookproc in \hookproc.pas\.
  exports
  setkeyhook,
  endkeyhook.
  begin
  nexthookproc:=0.
  procsaveexit:=exitproc.
  exitproc:=@keyhookexit.
  end.
  2.在Hookproc.pas中实现了钩子具体过程:
  unit hookproc.
  interface
  uses
  Windows, Messages, SysUtils, Controls, StdCtrls.
  var
  nexthookproc:hhook.
  procsaveexit:pointer.
  function keyboardhook(icode:integer.wparam:wparam.
  lparam:lparam):lresult.stdcall.export.
  function setkeyhook:bool.export.//加载钩子
  function endkeyhook:bool.export.//卸载钩子
  procedure keyhookexit.far.
  const
  afilename=\c:\\debug.txt\.//将键盘输入动作写入文件中
  var
  debugfile:textfile.
  implementation
  function keyboardhookhandler(icode:integer.wparam:wparam.
  lparam:lparam):lresult.stdcall.export.
  begin
  if icode<.0 then
  begin
  result:=callnexthookex(hnexthookproc,icode,wparam,lparam).
  exit.
  end.
  assignfile(debugfile,afilename).
  append(debugfile).
  if getkeystate(vk_return)<.0 then
  begin
  writeln(debugfile,\).
  write(debugfile,char(wparam)).
  end
  else
  write(debugfile,char(wparam)).
  closefile(debugfile).
  result:=0.
  end.
  function endkeyhook:bool.export.
  begin
  if nexthookproc<.>.0 then begin
  unhookwindowshookex(nexthookproc).
  nexthookproc:=0.
  messagebeep(0). end.
  result:=hnexthookproc=0.
  end.
  procedure keyhookexit.far.
  begin
  if nexthookproc<.>.0 then endkeyhook.
  exitproc:=procsaveexit. end.
  end.

相关文章


计算机二级DELPHI函数:Hook技术实现键盘监控计算机二级考试
计算机二级DELPHI函数:捕获控制台程序输出计算机二级考试
DELPHI函数:API做的ServerSocket例子计算机二级考试
计算机二级DELPHI函数:WindowsAPI函数使用技巧计算机二级考试
计算机二级DELPHI函数:DelphiAPI函数详解计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛