如何使用Cjava检测活动的应用程序?【JAVA教程】

!
也想出现在这里? 联系我们
信息

如何使用Cjava检测活动的应用程序?,第1张

概述如何使用C / java检测活动的应用程序

我想logging活动的应用程序并保存我的活动应用程序的历史logging。 我说活跃的应用程序,因为如果我运行一个应用程序,它是最小化等,我不会把它算作一个活跃的应用程序。 为了让我的问题更清楚,让我们看看这个例子。 我打开firefox并在网上冲浪20分钟。 然后我打开一个文本编辑器,开始写5分钟(firefox正在运行,但我不使用它,所以firefox不应该被视为一个活动的应用程序)。 所以我应该能够logging下列信息:

firefox -> 20 minutes Text editor -> 5 minutes

我希望在 *** 作系统(linux是首选)时跟踪每个使用的应用程序,并开发一个开源应用程序,说明您使用每个应用程序的次数。

更新:我想logging的应用程序是用户在显示器上看到并正在使用的应用程序。 例如,你可以改变窗口的大小,这样你就可以同时看到firefox和文本编辑器(在不同的工作空间,级联等),但是你正在input文本编辑器,所以文本编辑器是主动应用程序 换句话说,如果您正在与之交互,或者您正在查看以pdf,文本等方式阅读某些内容的应用程序,则此应用程序处于活动状态。与应用程序进行交互:指的是单击,键入,滚动等。

纳诺:唯一不能弄清楚的是如何在这些条件下获得积极的应用。 我认为,如果我在当前工作空间的显示器上获得最高的应用程序来解决问题,那么我们有一个属性可以设置为一个窗口(总是在最前面),可能需要在没有启用该属性的情况下才能获得该窗口。 我发现这个问题可能有助于回答。

如果我删除其他进程的共享内存会发生什么?

如何检测线程或进程是否由于 *** 作系统调度而停止运行

QT Creator – 跨平台编译

了解linux或BSD内核的最佳方式是什么?

在python中获得友好的设备名称

使用Fedora 26,

提前致谢。

部署Python Qt应用程序跨平台:Win,OSX,linux

奇怪的文件名与embedded斜线 – Mac / windows冲突

在C中实现的UNIX命令

无法更新ICEAuthority文件/home/neha/.ICEAuthority

如何findunix上没有日志文件的死进程的原因?

不管应用程序是否“最小化”, 都不是linux进程的属性。 相反,它由您的“桌面管理器:软件(例如Gnome)管理,而后者又位于X windows之上。

换句话说,要找到哪些应用程序“最小化”,哪些不是,您通常需要查询X windows。 例如:

你怎么能检查一个窗口是否通过在linux终端最小化

if xwininfo -all -ID $windowIDGoHere |grep \”HIDden\”; then echo \”is hIDden\” fi

应该“xwininfo”为你工作…那么你肯定可以从Java调用它,例如通过使用Process p = Runtime.getRuntime().exec(…) 。

感谢贡献者,我找到了解决办法来做我所问的。 我在这里提供我的解决方案,希望将来我将添加我的应用程序的github链接。 我将使用java来构建它。 首先,我找到了这个用C语言做类似工作的qithub 。 但是,我想用java(我更喜欢它,因为maven和JavaFX)。 顺便说一句,让我知道如果我错了。

/* * To change this license header,choose license headers in Project PropertIEs. * To change this template file,choose Tools | Templates * and open the template in the editor. */ package com.sinusee.applinebuilder; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.TimeUnit; /** * * @author martin */ public class Main { /** * @param args the command line arguments */ private static final DateFormat sdf = new SimpleDateFormat(\”yyyy/MM/dd HH:mm:ss\”); public static voID main(String[] args) throws IOException,InterruptedException { // Todo code application logic here System.out.println(\”Start :\”); Date date = new Date(); do{ Process proc = Runtime.getRuntime().exec(\”xdotool getactivewindow getwindowname\”); java.io.inputStream is = proc.getinputStream(); java.util.Scanner s = new java.util.Scanner(is).useDelimiter(\”\\A\”); String val = \”\”; if (s.hasNext()) { val = s.next(); } else { val = \”\”; } System.out.print(val +\” \” + \”at:\”); System.out.println(sdf.format(date)); TimeUnit.SECONDS.sleep(10); }while(true); } }

它每10秒返回活动的窗口名称(这只是一个测试)。 它正在使用的应用程序的标题如下。

Start : ApplineBuilder – NetBeans IDE 8.2 at:2017/10/12 02:58:58 ApplineBuilder – NetBeans IDE 8.2 at:2017/10/12 02:58:58 GoldenDict at:2017/10/12 02:58:58 at:2017/10/12 02:58:58 How to detect the active application using C/java? – Stack Overflow – Mozilla firefox at:2017/10/12 02:58:58 ApplineBuilder – NetBeans IDE 8.2 at:2017/10/12 02:58:58 Cancel Running Task at:2017/10/12 02:58:58

总结

以上是内存溢出为你收集整理的如何使用C / java检测活动的应用程序?全部内容,希望文章能够帮你解决如何使用C / java检测活动的应用程序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞162 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容