在使用hook时,我实在搞不懂 CallNextHookEx 起什么作用。
我的理解是如果不是HOOK过程中要处理的消息时,由CallNextHookEx函数将消息传送出去,交由操作系统或其它进程处理。但是我在Hook过程中加了一个showmessage函数.发现无论何时都没有窗口弹出。这又跟我的理解不相符,我有些困惑了。
function KeyboardHookHandler(iCode: Integer;wParam: WPARAM;lParam: LPARAM)
: LRESULT; stdcall; export; //Hook过程
const
_KeyPressMask = $80000000;
begin
Result := 0;
If iCode < 0 Then
begin
showmessage('hu');//这段代码似乎不起作用
Result := CallNextHookEx(hNextHookProc, iCode, wParam, lParam);
Exit;
end;
// 侦测 Ctrl + B 组合键
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;