gpt4 book ai didi

java - 什么是 "hook"以及如何用 Java 编写一个?以及如何与内核通信以了解用户按下的键/向操作系统注册

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:40:49 24 4
gpt4 key购买 nike

虽然我搜索了很多,但我仍然不清楚“钩子(Hook)”到底是什么。例如,我在 wiki answers 上阅读了这篇文章:

A hook is a method of interposing a piece of code in front of another piece of code, so that the first piece of code executes before the second piece of code, giving the first piece of code an opportunity to monitor and/or filter the behavior of the second piece of code. An example might be a mouse hook, allowing the hook code to monitor the mouse while at the same time preserving the functionality of the original mouse event processing routine.

我也读过这个post ,但我仍然不明白“钩子(Hook)”到底是什么。有人可以用外行的话解释什么是“钩子(Hook)”吗?为什么有些人要写一个“钩子(Hook)”?另外,是否可以用 Java 编写一个“钩子(Hook)”?

注意:

我想用 java 写一个键盘记录器,我的一个 friend 说你必须用 C 写一个“钩子(Hook)”。我不能用 Java 写整个键盘记录器(只在 windows 上运行)吗?

编辑

请使用键盘记录器给出答案。我如何使用 Hook 请求内核向我的应用程序提供有关按下的键的信息?或者我如何使用 JNI 向操作系统注册我的应用程序?我希望我的应用程序记录用户按下的键。

最佳答案

我会将钩子(Hook)这个词与至少两个不同的概念联系起来:

a) 观察者模式,其中一个类允许您添加一个监听器,该监听器将在某些事件上得到通知。您可以在整个 Swing、Servlet API 和许多第 3 方框架中找到它。

b) 模板方法模式。抽象类定义了以何种顺序调用哪些方法,实现类可以覆盖这些方法。这样的例子并不常见,但您偶尔会看到它们。

关于java - 什么是 "hook"以及如何用 Java 编写一个?以及如何与内核通信以了解用户按下的键/向操作系统注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7285549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com