我们看hook帮助时可以看到windows提供了下面几种hook:
WH_CALLWNDPROC and WH_CALLWNDPROCRET Hooks
WH_CBT Hook
WH_DEBUG Hook
WH_FOREGROUNDIDLE Hook
WH_GETMESSAGE Hook
WH_JOURNALPLAYBACK Hook
WH_JOURNALRECORD Hook
WH_KEYBOARD Hook
WH_MOUSE Hook
WH_MSGFILTER and WH_SYSMSGFILTER Hooks
WH_SHELL Hook
还有至少一种帮助中没有提到
WH_HARDWARE=8 Hook, 你可以在Windows.Pas中找到定义。这个钩子就是硬件钩子。
{ Structure used by WH_HARDWARE }
PHardwareHookStruct = ^THardwareHookStruct;
{$EXTERNALSYM tagHARDWAREHOOKSTRUCT}
tagHARDWAREHOOKSTRUCT = packed record
hwnd: HWND;
message: UINT;
wParam: WPARAM;
lParam: LPARAM;
end;
THardwareHookStruct = tagHARDWAREHOOKSTRUCT;
{$EXTERNALSYM HARDWAREHOOKSTRUCT}
HARDWAREHOOKSTRUCT = tagHARDWAREHOOKSTRUCT;
(我曾经在一本书上介绍到好象是〈Windows NT 编程...>
由于Windows帮助没有提及此钩子,我也不知它具体如何用。
VxD当然可以实现,如果你没有接触过VxD,我想也不是几天能搞定的。
我仅提供一种选择。
在历险中我看到一个控件,(我想应该可以用他截获并口发回的数据,但不能模拟并口)
它的说明是:
WINPORT.ZIP
直接存取硬件设备 I/O 口地址 ( I/O Port Address ) 的非可视构件 ,提供
OnDataChanged 事件能够侦测 I/O 口内数据的异动 ( 1.0 版,附源码 ) ,作
者 : Stefanus M.。