首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用SetWindowsHookEx所指向的方法

调用SetWindowsHookEx所指向的方法
EN

Stack Overflow用户
提问于 2012-05-23 10:40:09
回答 1查看 372关注 0票数 0
代码语言:javascript
复制
HHOOK WINAPI SetWindowsHookEx(
 __in  int idHook,
 __in  HOOKPROC lpfn,
 __in  HINSTANCE hMod,
 __in  DWORD dwThreadId
);

在这个过程中,正如文档所说的,lpfn是指向钩子过程的指针。让钩子程序是:

代码语言:javascript
复制
keyboardProcessing(.....) {
}

我怎么称呼这个钩子程序?即使我叫这个钩子程序,我怎么能收到击键呢?

请解释SetWindowsHookEx 是如何工作的,以及如何调用实际的程序员定义的钩子方法来处理键?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-23 10:49:49

SetWindowsHookEx函数用于为某些Windows事件注册自定义处理程序。来自MSDN:

将应用程序定义的钩子过程安装到钩子链中。您将安装一个钩子过程来监视系统中的某些类型的事件。这些事件与特定线程或与调用线程位于同一个桌面中的所有线程相关联。

这意味着,对于选定的钩子类型(例如,键盘事件),Windows将调用提供的过程(lpfn)通知发生了该类型的事件。例如,您可以使用它从键盘获取所有事件,即使它们没有定向到应用程序窗口(想象一下编写宏记录器)。

我怎么称呼这个钩子程序?

您不必调用该过程,您将在对SetWindowsHookEx的调用中提供它的地址,然后在需要时为您调用它。

即使我叫这个钩子程序,我怎么能收到击键呢?

如前所述,您不必调用它,如果您为WH_KEYBOARD注册了一个钩子,那么Windows将为每个键盘事件调用该过程。不要忘记在您的过程中调用CallNextHookEx,钩子是一个过程链,每个过程都负责调用链中的下一个过程。最后,在用UnhookWindowsHookEx退出应用程序之前释放钩子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10718287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档