2010-01-25 118 views
4

只是一个匆匆(或者也许不是:]):获取正在运行的进程列表,获取活动进程(和它的应用程序)的Flex/AIR

是否有可能获得运行的应用程序/流程和莫名其妙的列表,而在后台运行,检查哪个进程处于活动状态?

此外 - 如果以某种方式,答案是肯定的,是否有可能对活动窗口/应用程序的更改作出反应,就好像它是Event或绑定到自定义事件(例如Event.SystemActiveAppChange)?

谢谢你的答案以及指针。

编辑:由于可能missunderstanding,我的意思是当地应用 - 你赢/ MAC/Linux机器上 - 我想(在语言学习的过程)跟踪哪些应用我用的最多,做一个小图也许?

所以,问题是:对于AIR应用程序,在FLEX开发,我想获取/列出所有正在运行的应用程序/进程,以及哪一个是活动的(用户PC上的/ MAC/Linux)的

回答

3

不幸的是这是不可能的,因为AIR可以访问既不过程信息也不系统性能指标。

您唯一的希望就是在.NET或Objective C中创建另一个服务(如在,不是跨平台 - 假设这是一项要求),它可以通过本地NetConnection向AIR应用程序提供进程信息。我对Java不太确定,但是你也许能够摆脱Mono。

+0

你能想到任何简单的解决方案吗? :D可能不是...... – 2010-01-25 19:52:51

+1

不幸的是,没有。如果您使用的是Windows,则可以尝试启动并运行.NET服务以将数据提供给AIR应用程序。您需要的.NET API是Process.GetProcesses() - http://msdn.microsoft.com/en-us/library/1f3ys1f9.aspx。不确定关于OSX/Linux,对不起! – 2010-01-25 20:06:29

+0

好吧,这似乎是另一种想法减少 - 我现在没有心情学习另一种语言:D – 2010-01-25 21:17:31

1

您可以使用newconnection类来ping来回,而应用程序是活的: http://www.adobe.com/livedocs/flex/3/langref/flash/net/NetConnection.html

  1. 主要的应用程序可以发送 netConnection.send(mainConnection,“sendMessageBack”)上的计时器阙
  2. 孩子跑 应用程序将tr igger sendMessageBack函数 netConnection.send(childConnection,“setStatusOk”) 。
  3. 主要的应用程序可以检查(在相同的定时器阙如1)如果setStatusOk被称为如果没有拍Event.SystemActiveAppChange
+0

嗯,谢谢,但这里有可能的误解:]请阅读编辑。 – 2010-01-25 19:38:14

2

这是我正在调查的完全一样的东西!

虽然我认为还是没有内置的API来做到这一点,与新的AIR 2.0,你可以使用NativeProcess,这样你就可以刮的命令行工具的输出像OSX 顶部PS。实际上,我有一个启动和运行的概念证明,这使得AIR应用程序可以使用ActionScript监视应用程序内部的CPU使用情况,虽然速度有点慢,但不能低于1.5秒的采样频率。

但是不想离题太多,我还不知道哪些命令行工具可以用来获取活动的应用程序/窗口,但是我只是打开一个问题来找出问题,这可能是你的问题的解决方法:Which command line tools can I use to get the currently active application/window on each platform?

+0

好消息然后:)我会跟进:) – 2010-05-17 09:37:55

相关问题