Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用户更改窗口时的侦听器(不一定是应用程序创建的窗口)_Java_Windows - Fatal编程技术网

Java 用户更改窗口时的侦听器(不一定是应用程序创建的窗口)

Java 用户更改窗口时的侦听器(不一定是应用程序创建的窗口),java,windows,Java,Windows,我需要在我的应用程序中添加一项功能,要求我知道用户何时更改窗口(可以是浏览器窗口、我的应用程序窗口或任何其他窗口) 理想情况下,当窗口获得焦点时,我应该可以打印窗口的标题。我正在寻找解决这个问题的方法的问题是,我只得到了一些链接,这些链接告诉我如何在我正在创建的窗口上添加一个焦点侦听器,而我已经知道如何做了,对我一点帮助都没有 解决方案至少应该在Windows 7上运行。您面临的(主要)问题是Java过滤系统事件,以便您只能接收与您相关的事件。AFAIK这一切都是在本机级别完成的,因此无法拦截或

我需要在我的应用程序中添加一项功能,要求我知道用户何时更改窗口(可以是浏览器窗口、我的应用程序窗口或任何其他窗口)

理想情况下,当窗口获得焦点时,我应该可以打印窗口的标题。我正在寻找解决这个问题的方法的问题是,我只得到了一些链接,这些链接告诉我如何在我正在创建的窗口上添加一个焦点侦听器,而我已经知道如何做了,对我一点帮助都没有

解决方案至少应该在Windows 7上运行。

您面临的(主要)问题是Java过滤系统事件,以便您只能接收与您相关的事件。AFAIK这一切都是在本机级别完成的,因此无法拦截或修改此过滤过程

唯一的解决方案是使用JNI/JNA创建另一个“事件循环”,这将允许您截获关于系统传递的事件消息,并以您想要的方式处理它们


虽然稍微复杂一点,但它确实打开了一个机会的世界……

实现这一目标的唯一方法是通过JNI/JNA@MadProgrammer好吧,我看了看,它似乎正是我需要的。这比我希望的要复杂一点,但如果你告诉我这是完成这项任务的唯一方法,我会努力的。谢谢您可以将您的评论作为一个答案,这样我就可以接受。非常感谢您将我发送到正确的轨道上,我不知道从哪里开始查找。我过去也做过类似的事情,因为我使用了TeamDev JNI API(这是商业化的)