大家帮帮我!有关hook的。

pbcl 2001-07-16 10:10:43
我最近在写一个程序,涉及到跟踪键盘和鼠标操作的。程序如下:

function MyKbdHook(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; export;
begin

if (iCode = HC_ACTION) then
dwLastInputTick := GetTickCount;

Result := CallNextHookEx(hHookKbd, iCode, wParam, lParam);

end;

function MyMouseHook(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; export;
begin

if (iCode = HC_ACTION) then
dwLastInputTick := GetTickCount;

Result := CallNextHookEx(hHookMouse, iCode, wParam, lParam);

end;

procedure TfrmMain.Hook;
begin

hHookKbd := SetWindowsHookEx(WH_KEYBOARD, MyKbdHook, HInstance, 0);
hHookMouse := SetWindowsHookEx(WH_mouse, MykbdHook, HInstance, 0);
dwLastInputTick := GetTickCount;
TmHook.Enabled := True;

end;

我想得到从上一次有鼠标和键盘活动以来的时间间隔,但为什么只有第一次才能
触发hook时间,下一次调用hook回调时却不能触发了????

hook难道一定要做成dll形式吗?请高手指教!!!谢谢。



...全文
130 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Crob 2001-08-18
  • 打赏
  • 举报
回复
hHookMouse := SetWindowsHookEx(WH_mouse, MykbdHook, HInstance, 0);
里面的回调函数可能错了,但这和你的问题无关。

如果要做成全局的hook,那就一定要做成dll的形式,如果只在本程序内hook,则不用做进dll。
因为如果不做进dll,程序最小化或切换到后台时被系统悬挂,处于类似休眠状态,hook自然也中止了。
dancemaple 2001-08-18
  • 打赏
  • 举报
回复
gz
coolbaby 2001-08-18
  • 打赏
  • 举报
回复
gz
pbcl 2001-07-17
  • 打赏
  • 举报
回复
帮我!
pbcl 2001-07-16
  • 打赏
  • 举报
回复
如有那位高手有类似的程序例子,可以得到不按键或不点鼠标的时间间隔的。
发到pbcl@263.net。我再加50分。
pbcl 2001-07-16
  • 打赏
  • 举报
回复
在的,我的程序一直在前台工作的啊!
xiaoxiao_8 2001-07-16
  • 打赏
  • 举报
回复
以后的鼠标和键盘活动不是在你的应用程序中吧

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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