CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

Hook的制作

楼主SnowWolf()2000-02-14 15:35:00 在 Delphi / VCL组件开发及应用 提问

谁能给出一个用Delphi制作Hook程序的例子? 问题点数:350、回复次数:5Top

1 楼jy90()回复于 2000-02-14 15:42:00 得分 0

我有一个WIN32   SDK的例子,想要的话,EMAIL:jy90@21cn.comTop

2 楼kinist(温柔小刀)回复于 2000-02-14 15:45:00 得分 350

先将以下的文字剪贴存成HKTest.DPR  
  library   HKTest;  
   
  uses  
      HKProc   in   'HKProc.pas';  
   
  exports  
      EnableHotKeyHook,  
      DisableHotKeyHook;  
   
  begin  
      hNextHookProc   :=   0;  
      procSaveExit   :=   ExitProc;  
      ExitProc   :=   @HotKeyHookExit;  
  end.  
   
  将以下的文字剪贴存成HKProc.PAS  
  unit   HKProc;  
   
  interface  
   
  uses  
      Windows,   Messages;  
   
  var  
      hNextHookProc:   HHook;  
      procSaveExit:   Pointer;  
   
  function   KeyboardHookHandler(iCode:   Integer;  
      wParam:   WPARAM;  
      lParam:   LPARAM):   LRESULT;   stdcall;   export;  
  function   EnableHotKeyHook:   BOOL;   export;  
  function   DisableHotKeyHook:   BOOL;   export;  
  procedure   HotKeyHookExit;   far;  
   
  implementation  
   
  function   KeyboardHookHandler(iCode:   Integer;  
      wParam:   WPARAM;  
      lParam:   LPARAM):   LRESULT;   stdcall;   export;  
  const  
      _KeyPressMask   =   $80000000;  
  begin  
      Result   :=   0;  
      If   iCode   <   0   Then  
      begin  
          Result   :=   CallNextHookEx(hNextHookProc,   iCode,   wParam,   lParam);  
          Exit;  
      end;  
      if   ((lParam   and   _KeyPressMask)   =   0)   and  
          (GetKeyState(vk_Control)   <   0)   and   (wParam   =   Ord('B'))   then  
      begin  
          Result   :=   1;  
          WinExec('Notepad.exe',   sw_Normal);  
      end;  
  end;  
   
  function   EnableHotKeyHook:   BOOL;   export;  
  begin  
      Result   :=   False;  
      if   hNextHookProc   <>   0   then   Exit;  
      hNextHookProc   :=   SetWindowsHookEx(WH_KEYBOARD,  
          KeyboardHookHandler,  
          HInstance,  
          0);  
      Result   :=   hNextHookProc   <>   0;  
  end;  
   
  function   DisableHotKeyHook:   BOOL;   export;  
  begin  
      if   hNextHookProc   <>   0   then  
      begin  
          UnhookWindowshookEx(hNextHookProc);  
          hNextHookProc   :=   0;  
          MessageBeep(0);  
          MessageBeep(0);  
      end;  
      Result   :=   hNextHookProc   =   0;  
  end;  
   
  procedure   HotKeyHookExit;  
  begin  
      if   hNextHookProc   <>   0   then   DisableHotKeyHook;  
      ExitProc   :=   procSaveExit;  
  end;  
   
  end.  
   
  启动Delphi  
   
  开启HKTest.DPR,然後Project     and     Build   All以产生HKTest.DLL  
   
  File     and     New   Application   存到与HKTest.DLL相同的目录中.  
   
  在Form1上安置二个TButton,并撰写OnClick程式  
   
  implementation  
   
  {$R   *.DFM}  
   
  function   EnableHotKeyHook:   BOOL;   external   'HKTEST.DLL';  
  function   DisableHotKeyHook:   BOOL;   external   'HKTEST.DLL';  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
      if   EnableHotKeyHook   then  
          ShowMessage('HotKey   Testing...');  
  end;  
   
  procedure   TForm1.Button2Click(Sender:   TObject);  
  begin  
      if   DisableHotKeyHook   then  
          ShowMessage('HotKey   Testing...,   DONE!!');  
  end;  
   
  end.Top

3 楼bbsboyy()回复于 2000-02-14 17:11:00 得分 0

可否EMAIL一份给我。Top

4 楼jiangtao(蒋涛)回复于 2000-02-14 23:04:00 得分 0

vcl.vclxx.com中例子有很多Top

5 楼dedema(思想恐龙)回复于 2001-09-03 15:51:26 得分 0

我己经把这个例子改写成一个可以监视键盘上都输入些什么的dll了。谁要啊?Top

相关问题

  • HOOK
  • HOOK
  • 请大家介绍几篇介绍HOOK技术和类似于瑞星杀毒助手精灵制作的文章
  • 制作控件
  • skin的制作
  • HELP的制作
  • PHP = 小制作?
  • 怎么制作
  • 主页制作
  • 主页制作

关键词

  • dll
  • hnexthookproc
  • hktest
  • disablehotkeyhook
  • enablehotkeyhook
  • hkproc
  • hotkeyhookexit
  • keyboardhookhandler
  • procsaveexit
  • exitproc

得分解答快速导航

  • 帖主:SnowWolf
  • kinist

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo