获取正在运行的进程列表,获取活动进程(以及它的应用程序)Flex / AIR

时间:2010-01-25 18:12:24

标签: flex flash actionscript-3 air

只是一个快速(或可能不是:)]:

是否有可能以某种方式获取正在运行的应用程序/进程的列表,并且在后台运行时,检查哪个进程处于活动状态?

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

感谢您的答案以及指示。

编辑:由于可能的误解,我的意思是本地应用程序 - 在你的win / mac / linux机器上 - 我想(在学习语言的过程中)跟踪我最常用的应用程序,可能会制作一个小图表吗?

所以,重点是:在FLEX中开发的AIR应用程序中,我想获取/列出所有正在运行的应用程序/进程,以及哪一个处于活动状态(在用户的PC / Mac / Linux上)

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

这与我正在调查的事情完全一样!

虽然我认为仍然没有内置的API来实现这一点,但使用新的AIR 2.0可以使用NativeProcess,因此您可以抓取命令行工具的输出,例如 top 或OSX上的 ps 。我实际上有一个概念验证和运行,这使得AIR应用程序可以使用ActionScript监视应用程序内部的CPU使用情况,尽管它有点慢,不能低于1.5秒的采样频率。

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

答案 2 :(得分:1)

您可以使用newconnection类在应用程序处于活动状态时来回ping: http://www.adobe.com/livedocs/flex/3/langref/flash/net/NetConnection.html

  1. 主应用可以发送 netConnection.send(mainConnection “sendMessageBack”) 在计时器que上运行
  2. 子应用程序将触发 sendMessageBack函数 netConnection.send(childConnection “setStatusOk”)
  3. 主应用程序可以检查(在同一个计时器上为1)如果没有调用setStatusOk则调用Event.SystemActiveAppChange