首页 / JAVA / 从Java中的单独进程捕获键击
从Java中的单独进程捕获键击
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从Java中的单独进程捕获键击,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1796字,纯文字阅读大概需要3分钟。
内容图文
![从Java中的单独进程捕获键击](/upload/InfoBanner/zyjiaocheng/964/f4dbc4a7f8ac45a5ba15e62e5e90b22a.jpg)
我希望这发生:
>启动我的java程序
>我的java程序启动notepad.exe
>如果我在记事本中键入一个字母,我的java程序应该做出反应并打印出来
简而言之:是否可以为另一个进程创建一个关键事件监听器? java程序没有焦点.
如果不可能,我希望能够在我的Java swing窗口和记事本过程之间改变焦点.例如:
A)我的java程序有焦点(小摆动窗口),我输入字母“A”
B)记事本快速获得焦点并在那里输入字母A(例如使用Robot类)
C)我的java程序再次获得关注
引用Creating a keyboard hook for a Java program that sits in the System Tray给出的答案
所以,创建一个键盘钩子并不像它看起来那么容易,为了安全起见,java没有提供与系统事件交互的直接方式;因为它可能导致有关JVM,系统内存和Java Framework可移植性的严重问题.
你有4种方法来制作全局键盘钩子:
>学习JNI / JNA,我更喜欢JNA,因为它比JNI容易得多,在这两种情况下你都应该处理.dll文件.
>使用JIntellitype,正如您所说 – 发布了一些问题.
>谢尔盖比勒特尼科夫在http://biletnikov-dev.blogspot.com/2009/09/global-hotkeys-for-java-applications_25.html年的优雅解决方案
>忽略Java,尝试Autoit V3(我不是100%肯定它,但我认为你可以将信号/事件从Autoit发送到你的Java应用程序,所以Autoit只是作为捕获全局击键的桥梁)
顺其自然,这是一个很好的教程.如果该链接有404’d,那么项目源仍然可能正在运行:gigapeta.com/dl/1917618aba749a
解决方法:
使用您提供的解决方案#1:
Learn JNI / JNA, and I prefer JNA since its much easier than JNI , in both cases you shall deal with .dll files.
你应该看一下这个stackoverflow线程:
有一个复制/可管理的代码演示了JNA密钥钩子.您需要从http://jna.java.net/下载JNA依赖项才能使用该示例.你甚至不需要摆弄愚蠢的DLL.
此外,您可能想尝试使用此库.虽然我没有使用它的经验,但它在我的谷歌搜索中出现了“java keyboard hook”.它似乎完成了拦截键击的目标:
http://code.google.com/p/jnativehook/
请注意,您需要一些额外的本机代码才能查看当前“活动窗口”的内容.如果活动窗口与“Notepad.exe”匹配,则应记录本机键事件.
祝好运!
内容总结
以上是互联网集市为您收集整理的从Java中的单独进程捕获键击全部内容,希望文章能够帮你解决从Java中的单独进程捕获键击所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。