为位于系统托盘中的 Java 程序创建键盘挂钩

2024-02-06

基本上我有一个在系统托盘中运行的java程序,并且想添加它,因此如果用户按下CTRL + SHIFT + 1,它会选择位于托盘中的java程序的右键单击选项之一。

我想我正在寻找的是有关执行此操作的教程,或者最简单的方法是什么。我以前从未做过这样的事情,所以可能是某种新手教程?

Thanks


因此,创建键盘钩子并不像看起来那么容易,出于安全考虑,java 没有提供与系统事件交互的直接方法;因为它可能会导致有关 JVM、系统内存和 Java 框架可移植性的严重问题。

您有 4 种方法来制作全局键盘挂钩:

1-学习JNI http://en.wikipedia.org/wiki/JNI / JNA http://en.wikipedia.org/wiki/Java_Native_Access,我更喜欢 JNA 因为它比 JNI 容易得多,在这两种情况下您都应该处理 .dll 文件。

2 - 使用 JIntellitype ,正如您所说,它会出现一些问题。

3- Sergei Biletnikov 的优雅解决方案here http://biletnikov-dev.blogspot.com/2009/09/global-hotkeys-for-java-applications_25.html.

4-忽略Java,并尝试Autoit V3(我对此不是100%确定,但我认为您可以将信号/事件从Autoit发送到您的Java应用程序,因此Autoit只是作为捕获全局击键的桥梁)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为位于系统托盘中的 Java 程序创建键盘挂钩 的相关文章

随机推荐

  • 在启动中的 Spring Security 过滤器链之前调用过滤器

    我已经配置了我的过滤器 如下所示 但它不会在 Spring Security 过滤器链之前被调用 我已将订单设置为零 我正在使用 Spring Boot 1 3 它支持在过滤器上设置顺序 Bean public FilterRegistra
  • 文件打开失败

    出于教育目的 我正在编写一个小型加密程序 不是真正的加密 我已经重组了程序 所以我的所有代码都是主要的 以简化我自己的事情 我的未加密文件失败 我不知道为什么 这是我目前所知道的 使用Xcode 通过切换文件打开 和测试 的顺序来验证仅未加
  • 调整图像大小以在 TensorFlow 中进行训练

    我尝试读取自己的图像以在 TensorFlow 中进行训练 然而 似乎有一个错误 ValueError size must be a 1 D Tensor of 2 elements new height new width 下面的代码示例
  • 在 Magento 产品页面上显示一次价格

    我只想在 Magento 产品页面上显示一次产品价格 目前 它显示两次 我尝试改变app design frontend base default template catalog product price phtml 但没有得到它 我也
  • 如何限制 Flutter 中滚动视图的滚动距离?

    我制作了一个页面 其中包含列中的多个文本字段和按钮 该列包含在具有背景图像的容器中 这个容器本身就是滚动视图小部件的子级 因此 当一个人单击其中一个字段时 他们的键盘将会弹出 占据屏幕的一部分 这意味着某些按钮 字段位于屏幕外 这就是滚动视
  • 如何为从 swagger 生成的特定 POJO 生成 @JsonInclude(value = JsonInclude.Include.NON_NULL) ?

    我的请求对象是通过 openapi generator maven plugin 基于 json 接口文件自动生成的 我想要这个注释 JsonInclude value JsonInclude Include NON NULL 在自动生成的
  • sessionStorage 更改不会触发“存储”事件

    我正在关注这里 https developer mozilla org en US docs Web API Web Storage API Using the Web Storage API看看如果有人打开了多个选项卡 我是否可以在我的网
  • Android 中的 SVG/VectorDrawable 问题

    我在我的 Android 项目中使用了 svg 文件 Android 4 4以下版本存在问题 我已经尝试过这些解决方案 app srcCompat vectorDrawables useSupportLibrary true在 gradle
  • CodeIgniter 4... documentRoot 未公开... htaccess 不起作用

    我开始涉足 CodeIgniter 4 完成了一个简单的应用程序 在本地 我将文档根设置为 public 而在产品托管环境中 我无法将文档根设置为 public 相反 它位于 root 中 所以结构是这样的 root admin app s
  • 如何让用户从控制台输入任意数量的变量

    这是我编写的代码 用于掷两个骰子 直到出现一对 我的问题是 有没有办法让用户输入他 她想要的任意数量的骰子 我不想创建 50 个 int 骰子 如果我使用数组或列表 我也会遇到同样的问题 我必须将每个数组部分分配给 numbergen 50
  • 使用嵌入式 Jetty 在 WAR 之外提供静态内容

    我有一个 WAR 通过嵌入式 Jetty 提供服务 我想包含静态文件战争之外 我的目标是 从 WAR 外部的路径 相对于嵌入式 Jetty 运行的目录 提供静态文件 所以 如果我调用 jar srv app 我想配置一个 URLhttp m
  • 使用 Wicket + Spring + Hibernate 的三层分层应用程序。您将如何处理交易?

    我正在考虑使用在视图中打开会话 OSIV Spring 附带的过滤器或拦截器 因为对于我作为开发人员来说这似乎是一种方便的方法 如果这是您的建议 您是否建议使用过滤器或拦截器 为什么 我也想知道它将如何与Hibernate模板如果我将失去将
  • 反应本机 - 反应上下文,如图标操作

    我目前使用反应上下文存储我的用户 每个用户可以喜欢任意数量的帖子 我的后端有一个名为 isLiked 的参数 对于每个用户的每个帖子来说 该参数可以为 true 或 false 这是我的代码 我尝试了一个解决方案 我的问题是 当我按下概述的
  • Node.js:是否有关于 process.env 变量的任何文档

    I use process env在我的程序中 这个变量似乎与我的程序无关 没有它我的应用程序也可以正常运行 那么如何才能充分利用process env 有相关的文档或者教程吗 试试这个链接http nodejs org api proce
  • 输入材料芯片——初始形式数组

    我想用输入数据初始化我的垫芯片输入 但是当我有两个芯片时 它仅形成一种形式 组件 ts Component selector app pps dialog templateUrl pps dialog component html expo
  • 将 pandas 日期时间月份转换为字符串表示形式

    我想要一个带有时间戳列的 pandas DataFrame 并且想要创建一个仅包含月份的列 我想要月份列包含月份的字符串表示形式 而不是整数 我做了这样的事情 df Dates pd to datetime df Dates df Mont
  • pythonlogging.FileHandler默认使用块缓冲吗?

    The logging处理程序类有一个flush 方法 并看着code https github com python cpython blob 2 7 Lib logging init py logging FileHandler调用时不
  • bash: /bin/tar: 使用 tar 压缩多个文件时参数列表太长

    我正在尝试使用以下命令压缩存档中的文件 tar czvf compress file tar gz cat file list txt 我有一个错误 bash bin tar Argument list too long 文件编号太长 如何
  • 在Android中生成并打印特定尺寸的PDF

    我正在使用 Android 应用程序 我想生成并打印 PDF 但我遇到了一些麻烦 我需要生成PDF与 80 毫米width 以及height可能会有所不同 我正在尝试这个 public class PDFGenerator implemen
  • 为位于系统托盘中的 Java 程序创建键盘挂钩

    基本上我有一个在系统托盘中运行的java程序 并且想添加它 因此如果用户按下CTRL SHIFT 1 它会选择位于托盘中的java程序的右键单击选项之一 我想我正在寻找的是有关执行此操作的教程 或者最简单的方法是什么 我以前从未做过这样的事