哪里有DELPHI版的APIHOOK?最好能够提供源码

hubostar 2003-08-19 11:31:58
哪里有DELPHI版的APIHOOK?最好能够提供源码.如拦截Windows文件访问函数,注册表读写函数等等...
...全文
129 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ly_liuyang 2003-08-20
  • 打赏
  • 举报
回复
是APIHook呀
FAQ有的

http://expert.csdn.net/Expert/TopicView.asp?id=1479439
fuyifan 2003-08-19
  • 打赏
  • 举报
回复
利用Hook技术实现键盘监控
--- 在许多系统中,出于安全或其它原因,常常要求随时对键盘进行监控,一个专业的监控程序必须具备两点,一是实时;二是作为指示图标运行。实际应用中把利用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.

---- 二、Win95/98使用任务栏右方指示区来显示应用程序或工具图标对指示区图标的操作涉及了一个API函数Shell_NotifyIcon,它有两个参数,一个是指向TnotifyIconData结构的指针,另一个是要添加、删除、改动图标的标志。通过该函函数将应用程序的图标添加到指示区中,使其作为图标运行,增加专业特色。当程序起动后,用鼠标右键点击图标,则弹出一个菜单,可选择sethook或endhook。

unit kb;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms,
Dialogs,
StdCtrls, Menus,shellapi;
const
icon_id=1;
MI_iconevent=wm_user+1;//定义一个用户消息
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
sethook1: TMenuItem;
endhook1: TMenuItem;
N1: TMenuItem;
About1: TMenuItem;
Close1: TMenuItem;
Gettext1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure sethook1Click(Sender: TObject);
procedure endhook1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Close1Click(Sender: TObject);
private
{ Private declarations }
nid:tnotifyicondata;
normalicon:ticon;
public
{ Public declarations }
procedure icontray(var msg:tmessage);
message mi_iconevent;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function setkeyhook:bool;external 'keyspy.dll';
function endkeyhook:bool;external 'keyspy.dll';

procedure tform1.icontray(var msg:tmessage);
var
pt:tpoint;
begin
if msg.lparam=wm_lbuttondown then
sethook1click(self);
if msg.LParam=wm_rbuttondown then
begin
getcursorpos(pt);
setforegroundwindow(handle);
popupmenu1.popup(pt.x,pt.y);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
normalicon:=ticon.create;
application.title:=caption;
nid.cbsize:=sizeof(nid);
nid.wnd:=handle;
nid.uid:=icon_id;
nid.uflags:=nif_icon or nif_message or nif_tip;
nid.ucallbackmessage:=mi_iconevent;
nid.hIcon :=normalicon.handle;
strcopy(nid.sztip,pchar(caption));
nid.uFlags:=nif_message or nif_icon or nif_tip;
shell_notifyicon(nim_add,@nid);
SetWindowLong(Application.Handle,
GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;

procedure TForm1.sethook1Click(Sender: TObject);
begin
setkeyhook;
end;

procedure TForm1.endhook1Click(Sender: TObject);
begin
endkeyhook;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
nid.uFlags :=0;
shell_notifyicon(nim_delete,@nid);
end;

procedure TForm1.Close1Click(Sender: TObject);
begin
application.terminate;
end;

---- 该程序虽然只用了几个shellai函数,但是它涉及到了在Delphi中对DLL的引用、钩子实现、对指示区的操作、用户定义消息的处理、文件的读写等比较重要的内容,我相信这篇文章能对许多Delphi的初学者有所帮助。
---- 该程序在Win98、Delphi4.0中正常运行。
Delphi编程大师2003 还有各类控件400多个.也有Delphi教学文章及书籍25个.和各类Delphi编程的软件原代码 不但能使你简单的操控Delphi进行编程.而且能对初学者进行深入浅出的教学. 同时Delphi的原代码能帮助各位Delphi爱好者在编程过程中得到不同的启发与参考. 本软件含有: BorlandDelphi7.06中文 BorlandDelphi6中文 BorlandDelphi5中文 控件控件大全: DBISAM 3.07 SkinForm 界面控件 FlatStyle 文件备份 BackFile XP菜单 XPMenu DosMove RainXP XP Bar Menu 窗口停泊组件 RxLib2.75 nBdeDBF AVL平衡树控件包 常用数据结构控件包(+源码+测试程序) SourceEdit DevExpress For Delphi6&7 Inforpower 4000.E FlatStyle 平面界面控件 ehlib25 Devexpress DBTree 1.3 1 FS 序列号大全 FrmConv 1.0 PrintManager 1.0 超链接拖放 Delphi Project Launcher 1.3 Gifform For Delphi 1.1 1stClass for Delphi 6 3000.01 RegTool控件 1.0 Delphi 6.0 汉化资源包 繁简转换原码 WjTable Miniprint Miniprint_tryversion Spcomm Menubar mssql bitdbgrid exp aexcel aliased doci ln hgdbfilter kbmmemtab VclZip 2.23本 一个极酷的TreeView控件,多种视觉效果.推荐 对于字符串进行DES加密的控件 在Delphi中制作扑克牌游戏的控件 eXperience dxPack12(一组dotNet控件) 界面控件ThemeEngine 3.2 界面控件Skinengine3.2.0 内存表控件 kbmMemTable TGifImage For D7 经本人修改过的XpMenu,真正xp效果 可支持窗体停靠的控件 Modem拨号构件 一个用于Ini文件控制的控件 DBPanel 一个支持多种图形格式的控件 Modem拨号控制控件 一个可以实现颜色渐变效果的label控件 TEasySize Skinengine 3.1.2 ADOTable TTransitionEffect 一个可以以动画方式显示Hint的控件 一个能够旋转显示其内的图像的Image控件 Gifimage For Delphi6 Richview1.4.2 SakEmail控件3.4.3本 利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新本的gifimage glad控件包for d5 拥有七种不同外观的改良TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 能够嵌入TButton或TComboBox的TStringGrid控件 能够以回转的形式带出欲显示Form的控件 具有渐层色彩为背景之改良TLabel构件 模拟大型电子广告牌的控件 VDF-Tools系列控件 能够得知True Type字体详细信息的非可视构件 直接存取硬件设备IO口地址的非可视构件BAIOPORT QuickReport实现自动分行显示的补丁 能够拦截系统内键盘输入信息的Hook构件 能够精简HTML文件的控件 可以处理XML的TQuickRTTI控件 制作 Microsoft ISAPI Extention 应用程序的构件 控制ISDN拨号的控件 AGHOTKEYMGR 针对 UDP 通讯协议的 Socket 构件 能够更改 TForm.Cpation 显示字体的非可视构件 改良的 TTimer 构件 利用 MODEM 提供拨号功能的非可视构件 加强 TTimer 构件 TCommStatus串行状态控件 一个具备 FTP 功能的构件 目前为止效果最好的mp3播放控件组 非常COOL的能够做出WIN2K般的效果动感界面控件 很cool的grid控件 换肤功能控件 自动缩放数据表格 V1.0 平滑字体控件包 V1.1 应用程序病毒免疫控件 V1.21 以可视鼠标拖放的方式产生 SQL 语句的可视构件 UCCOMP AExcel组件 模拟音响设备中纵向彩色LED指示表的控件 类似音响设备中立体旋钮构件 TRANSPARENT PRNTRAID TMnet 能够解析编辑MP3文件中的Tag的非可视
Delphi编程大师2003 还有各类控件400多个.也有Delphi教学文章及书籍25个.和各类Delphi编程的软件原代码 不但能使你简单的操控Delphi进行编程.而且能对初学者进行深入浅出的教学. 同时Delphi的原代码能帮助各位Delphi爱好者在编程过程中得到不同的启发与参考. 本软件含有: BorlandDelphi7.06中文 BorlandDelphi6中文 BorlandDelphi5中文 控件控件大全: DBISAM 3.07 SkinForm 界面控件 FlatStyle 文件备份 BackFile XP菜单 XPMenu DosMove RainXP XP Bar Menu 窗口停泊组件 RxLib2.75 nBdeDBF AVL平衡树控件包 常用数据结构控件包(+源码+测试程序) SourceEdit DevExpress For Delphi6&7 Inforpower 4000.E FlatStyle 平面界面控件 ehlib25 Devexpress DBTree 1.3 1 FS 序列号大全 FrmConv 1.0 PrintManager 1.0 超链接拖放 Delphi Project Launcher 1.3 Gifform For Delphi 1.1 1stClass for Delphi 6 3000.01 RegTool控件 1.0 Delphi 6.0 汉化资源包 繁简转换原码 WjTable Miniprint Miniprint_tryversion Spcomm Menubar mssql bitdbgrid exp aexcel aliased doci ln hgdbfilter kbmmemtab VclZip 2.23本 一个极酷的TreeView控件,多种视觉效果.推荐 对于字符串进行DES加密的控件 在Delphi中制作扑克牌游戏的控件 eXperience dxPack12(一组dotNet控件) 界面控件ThemeEngine 3.2 界面控件Skinengine3.2.0 内存表控件 kbmMemTable TGifImage For D7 经本人修改过的XpMenu,真正xp效果 可支持窗体停靠的控件 Modem拨号构件 一个用于Ini文件控制的控件 DBPanel 一个支持多种图形格式的控件 Modem拨号控制控件 一个可以实现颜色渐变效果的label控件 TEasySize Skinengine 3.1.2 ADOTable TTransitionEffect 一个可以以动画方式显示Hint的控件 一个能够旋转显示其内的图像的Image控件 Gifimage For Delphi6 Richview1.4.2 SakEmail控件3.4.3本 利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新本的gifimage glad控件包for d5 拥有七种不同外观的改良TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 能够嵌入TButton或TComboBox的TStringGrid控件 能够以回转的形式带出欲显示Form的控件 具有渐层色彩为背景之改良TLabel构件 模拟大型电子广告牌的控件 VDF-Tools系列控件 能够得知True Type字体详细信息的非可视构件 直接存取硬件设备IO口地址的非可视构件BAIOPORT QuickReport实现自动分行显示的补丁 能够拦截系统内键盘输入信息的Hook构件 能够精简HTML文件的控件 可以处理XML的TQuickRTTI控件 制作 Microsoft ISAPI Extention 应用程序的构件 控制ISDN拨号的控件 AGHOTKEYMGR 针对 UDP 通讯协议的 Socket 构件 能够更改 TForm.Cpation 显示字体的非可视构件 改良的 TTimer 构件 利用 MODEM 提供拨号功能的非可视构件 加强 TTimer 构件 TCommStatus串行状态控件 一个具备 FTP 功能的构件 目前为止效果最好的mp3播放控件组 非常COOL的能够做出WIN2K般的效果动感界面控件 很cool的grid控件 换肤功能控件 自动缩放数据表格 V1.0 平滑字体控件包 V1.1 应用程序病毒免疫控件 V1.21 以可视鼠标拖放的方式产生 SQL 语句的可视构件 UCCOMP AExcel组件 模拟音响设备中纵向彩色LED指示表的控件 类似音响设备中立体旋钮构件 TRANSPARENT PRNTRAID TMnet 能够解析编辑MP3文件中的Tag的非可视
Delphi编程大师2003 还有各类控件400多个.也有Delphi教学文章及书籍25个.和各类Delphi编程的软件原代码 不但能使你简单的操控Delphi进行编程.而且能对初学者进行深入浅出的教学. 同时Delphi的原代码能帮助各位Delphi爱好者在编程过程中得到不同的启发与参考. 本软件含有: BorlandDelphi7.06中文 BorlandDelphi6中文 BorlandDelphi5中文 控件控件大全: DBISAM 3.07 SkinForm 界面控件 FlatStyle 文件备份 BackFile XP菜单 XPMenu DosMove RainXP XP Bar Menu 窗口停泊组件 RxLib2.75 nBdeDBF AVL平衡树控件包 常用数据结构控件包(+源码+测试程序) SourceEdit DevExpress For Delphi6&7 Inforpower 4000.E FlatStyle 平面界面控件 ehlib25 Devexpress DBTree 1.3 1 FS 序列号大全 FrmConv 1.0 PrintManager 1.0 超链接拖放 Delphi Project Launcher 1.3 Gifform For Delphi 1.1 1stClass for Delphi 6 3000.01 RegTool控件 1.0 Delphi 6.0 汉化资源包 繁简转换原码 WjTable Miniprint Miniprint_tryversion Spcomm Menubar mssql bitdbgrid exp aexcel aliased doci ln hgdbfilter kbmmemtab VclZip 2.23本 一个极酷的TreeView控件,多种视觉效果.推荐 对于字符串进行DES加密的控件 在Delphi中制作扑克牌游戏的控件 eXperience dxPack12(一组dotNet控件) 界面控件ThemeEngine 3.2 界面控件Skinengine3.2.0 内存表控件 kbmMemTable TGifImage For D7 经本人修改过的XpMenu,真正xp效果 可支持窗体停靠的控件 Modem拨号构件 一个用于Ini文件控制的控件 DBPanel 一个支持多种图形格式的控件 Modem拨号控制控件 一个可以实现颜色渐变效果的label控件 TEasySize Skinengine 3.1.2 ADOTable TTransitionEffect 一个可以以动画方式显示Hint的控件 一个能够旋转显示其内的图像的Image控件 Gifimage For Delphi6 Richview1.4.2 SakEmail控件3.4.3本 利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新本的gifimage glad控件包for d5 拥有七种不同外观的改良TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 能够嵌入TButton或TComboBox的TStringGrid控件 能够以回转的形式带出欲显示Form的控件 具有渐层色彩为背景之改良TLabel构件 模拟大型电子广告牌的控件 VDF-Tools系列控件 能够得知True Type字体详细信息的非可视构件 直接存取硬件设备IO口地址的非可视构件BAIOPORT QuickReport实现自动分行显示的补丁 能够拦截系统内键盘输入信息的Hook构件 能够精简HTML文件的控件 可以处理XML的TQuickRTTI控件 制作 Microsoft ISAPI Extention 应用程序的构件 控制ISDN拨号的控件 AGHOTKEYMGR 针对 UDP 通讯协议的 Socket 构件 能够更改 TForm.Cpation 显示字体的非可视构件 改良的 TTimer 构件 利用 MODEM 提供拨号功能的非可视构件 加强 TTimer 构件 TCommStatus串行状态控件 一个具备 FTP 功能的构件 目前为止效果最好的mp3播放控件组 非常COOL的能够做出WIN2K般的效果动感界面控件 很cool的grid控件 换肤功能控件 自动缩放数据表格 V1.0 平滑字体控件包 V1.1 应用程序病毒免疫控件 V1.21 以可视鼠标拖放的方式产生 SQL 语句的可视构件 UCCOMP AExcel组件 模拟音响设备中纵向彩色LED指示表的控件 类似音响设备中立体旋钮构件 TRANSPARENT PRNTRAID TMnet 能够解析编辑MP3文件中的Tag的非可视构件 一个TextToSpeech(TTS)控件 一个报表控件 自缩放数据表格 TAutoDBGrid V1.0 应用程序病毒免疫控件 SelfAV V1.1 For Delphi 平滑字体控件包 V1.1Beta gifimage最新本 MS的语音生成(TTS)的Delphi单元 功能全面的报表快速生成构件库 TTommHtmlLabel 存取和控制硬件的控件Tvichw32 能够让 TForm 构件产生半透明效果的非可视构件 GraphicEx87 最棒的Internet编程构件 Microsoft Office 97样式TComboBox 构件 JBS 系列的构件套件 ARC系列套件1.0.3 TBurner TDosMove Shell Control Pack VCL v1.5 TCadComboBox outlplus BUPack Component Package v1.4 Directx游戏制作开发包DGCBETA6的十七个例子 Directx游戏制作开发包DGCBETA6 DRIVEDIR TDsFancyButton CGI Expert Components Release 5.0.6 RaLib 1.00 TDsPanel TColorPageControl 超级中国式报表控件(printdbgrid)示例 TOutlook Button 1.0 TPageSetupDialog TStolliFullScreen TSpeedbtn.zip ALEXISRIOS fre AMDCPACK .......................
Delphi编程大师2003 还有各类控件400多个.也有Delphi教学文章及书籍25个.和各类Delphi编程的软件原代码 不但能使你简单的操控Delphi进行编程.而且能对初学者进行深入浅出的教学. 同时Delphi的原代码能帮助各位Delphi爱好者在编程过程中得到不同的启发与参考. 本软件含有: BorlandDelphi7.06中文 BorlandDelphi6中文 BorlandDelphi5中文 控件控件大全: DBISAM 3.07 SkinForm 界面控件 FlatStyle 文件备份 BackFile XP菜单 XPMenu DosMove RainXP XP Bar Menu 窗口停泊组件 RxLib2.75 nBdeDBF AVL平衡树控件包 常用数据结构控件包(+源码+测试程序) SourceEdit DevExpress For Delphi6&7 Inforpower 4000.E FlatStyle 平面界面控件 ehlib25 Devexpress DBTree 1.3 1 FS 序列号大全 FrmConv 1.0 PrintManager 1.0 超链接拖放 Delphi Project Launcher 1.3 Gifform For Delphi 1.1 1stClass for Delphi 6 3000.01 RegTool控件 1.0 Delphi 6.0 汉化资源包 繁简转换原码 WjTable Miniprint Miniprint_tryversion Spcomm Menubar mssql bitdbgrid exp aexcel aliased doci ln hgdbfilter kbmmemtab VclZip 2.23本 一个极酷的TreeView控件,多种视觉效果.推荐 对于字符串进行DES加密的控件 在Delphi中制作扑克牌游戏的控件 eXperience dxPack12(一组dotNet控件) 界面控件ThemeEngine 3.2 界面控件Skinengine3.2.0 内存表控件 kbmMemTable TGifImage For D7 经本人修改过的XpMenu,真正xp效果 可支持窗体停靠的控件 Modem拨号构件 一个用于Ini文件控制的控件 DBPanel 一个支持多种图形格式的控件 Modem拨号控制控件 一个可以实现颜色渐变效果的label控件 TEasySize Skinengine 3.1.2 ADOTable TTransitionEffect 一个可以以动画方式显示Hint的控件 一个能够旋转显示其内的图像的Image控件 Gifimage For Delphi6 Richview1.4.2 SakEmail控件3.4.3本 利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新本的gifimage glad控件包for d5 拥有七种不同外观的改良TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 能够嵌入TButton或TComboBox的TStringGrid控件 能够以回转的形式带出欲显示Form的控件 具有渐层色彩为背景之改良TLabel构件 模拟大型电子广告牌的控件 VDF-Tools系列控件 能够得知True Type字体详细信息的非可视构件 直接存取硬件设备IO口地址的非可视构件BAIOPORT QuickReport实现自动分行显示的补丁 能够拦截系统内键盘输入信息的Hook构件 能够精简HTML文件的控件 可以处理XML的TQuickRTTI控件 制作 Microsoft ISAPI Extention 应用程序的构件 控制ISDN拨号的控件 AGHOTKEYMGR 针对 UDP 通讯协议的 Socket 构件 能够更改 TForm.Cpation 显示字体的非可视构件 改良的 TTimer 构件 利用 MODEM 提供拨号功能的非可视构件 加强 TTimer 构件 TCommStatus串行状态控件 一个具备 FTP 功能的构件 目前为止效果最好的mp3播放控件组 非常COOL的能够做出WIN2K般的效果动感界面控件 很cool的grid控件 换肤功能控件 自动缩放数据表格 V1.0 平滑字体控件包 V1.1 应用程序病毒免疫控件 V1.21 以可视鼠标拖放的方式产生 SQL 语句的可视构件 UCCOMP AExcel组件 模拟音响设备中纵向彩色LED指示表的控件 类似音响设备中立体旋钮构件 TRANSPARENT PRNTRAID TMnet 能够解析编辑MP3文件中的Tag的非可视

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧