【问题标题】:Get list of running processes, get active process (and it's application) Flex/AIR获取正在运行的进程列表,获取活动进程(及其应用程序) Flex/AIR
【发布时间】:2010-01-25 18:12:24
【问题描述】:

只是匆匆忙忙(或者可能不是:]):

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

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

感谢您的回答和指点。

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

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

【问题讨论】:

    标签: apache-flex flash actionscript-3 air


    【解决方案1】:

    很遗憾,这是不可能的,因为 AIR 既不能访问进程信息,也不能访问系统性能指标。

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

    【讨论】:

    • 不幸的是,没有。如果您使用的是 Windows,则可以尝试启动并运行 .NET 服务,以向您的 AIR 应用程序提供数据。您需要的 .NET API 是 Process.GetProcesses() - msdn.microsoft.com/en-us/library/1f3ys1f9.aspx。不确定 OSX/Linux,抱歉!
    • 嗯,这似乎是另一个想法被削减了——我现在没心情学习另一种语言:D
    【解决方案2】:

    这与我正在调查的事情完全相同!

    虽然我认为仍然没有内置 API 来执行此操作,但在新的 AIR 2.0 中,您可以使用 NativeProcess,因此您可以抓取命令行工具的输出,例如 top 或 ps。实际上,我已经启动并运行了一个概念证明,这使得 AIR 应用程序可以使用 ActionScript 监控应用程序内部的 CPU 使用情况,虽然它有点慢,但采样频率不能低于 1.5 秒。

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

    【讨论】:

    • 那么好消息 :) 我会跟进 :)
    【解决方案3】:

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

    1. 主应用可以发送 netConnection.send(mainConnection,"sendMessageBack") 在计时器队列上运行
    2. 子应用将在 sendMessageBack 函数 netConnection.send(childConnection,"setStatusOk") .
    3. 如果没有触发 Event.SystemActiveAppChange,主应用程序可以检查(在与 1 相同的计时器队列上)是否调用了 setStatusOk

    【讨论】:

    • 嗯,谢谢,但这里可能存在误解:] 请阅读编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2012-09-04
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多