Adobe AIR是构建应用程序使用情况监控工具的不错选择吗?

时间:2011-03-12 15:04:17

标签: air adobe

我一直在寻找关于Adobe AIR当前版本的一些答案,我想知道是否有人可以告诉我是否可以使用Adobe AIR应用程序执行所有这些操作,因为我知道他们有他们的局限性:

  • 在Windows中的系统托盘中,当在后台运行时,作为OS X中最顶部栏中的小图标?这需要不同的编程来支持这两个平台吗?

  • 当在后台时,会收到关于哪个应用获得焦点以及何时获得通知的通知?理想情况下,我还会得到文档的名称,网站的URL(如果我们在带有标签的浏览器上),它们具有焦点等等。我正在尝试构建一个类似于RescueTime的工具,它告诉你如何你在每个应用程序或网站上花了很多时间。

  • 有一个特定的系统范围的热键(如Alt + Space),当按下该应用程序时,应用程序会成为焦点(来自后台)?

  • 为特定事件显示通知(低吼风格的非侵入式弹出窗口)?

  • 在系统失效时收到通知(屏幕保护程序弹出,用户“睡觉”计算机等)

谢谢!

2 个答案:

答案 0 :(得分:1)

是肯定的。所有这些都可以通过使用NativeApplicationNativeProcess的AIR应用程序来完成。

为了在Windows和Mac上编写一次并部署,您需要通过使用NativeApplication属性来确定您的应用程序正在运行哪个操作系统:

  • NativeApplication.supportsDockIcon(Mac OS X)
  • NativeApplication.supportsSystemTrayIcon(Windows)

或者您可以更准确地确定操作系统:

//Resoslve Operating System
if  (Capabilities.os.toLowerCase().indexOf("win") > -1)
    {
    //Native Processes for Windows  
    }
    else if (Capabilities.os.toLowerCase().indexOf("mac") > -1)
    {
    //Native Processes for Mac OS X
    }
    else if (Capabilities.os.toLowerCase().indexOf("linux") > -1)
    {
    //Native Process for Linux
    }
    else
    {
    throw new Error("Unresolved Operating System");
    }

虽然此方法只需要您编写一次应用程序,但是必须使用本机安装程序为每个目标操作系统发布使用系统特定进程(本机进程)的AIR应用程序,因为每个操作系统的本机进程都不同。

某些本机进程(例如从串行端口或打印机驱动程序读取数据)可能需要一个小的辅助应用程序(可能用C ++编写)用作AIR控制的代理,以便AIR和目标之间进行通信过程

进一步阅读:Interacting with a native process

答案 1 :(得分:0)

  1. 是,统一支持系统托盘
  2. 不,AIR不了解其他应用程序。
  3. 没有全球热键支持
  4. 没有
  5. AIR不是在考虑系统编程的情况下创建的,它具有Web根。第2,第3和第5项可以使用本机帮助程序完成,但这需要为每个目标平台进行系统编程。