概述如何使用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检测活动的应用程序?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容