Windows上的Application.application.nativeWindow.activate()问题

时间:2009-12-08 14:35:26

标签: flex adobe air

我有一个带有系统托盘图标的AIR应用程序。单击时,它会显示并激活应用程序。当应用程序被隐藏(停靠)时,这正如预期的那样工作,但是如果我选择另一个应用程序以便我的应用程序在后台,则单击系统托盘图标不会执行任何操作。

奇怪的是,我在系统托盘图标上也有一个上下文菜单,它有一个恢复选项,它调用与ScreenMouseEvent.CLICK相同的事件处理程序,但仍有效。

我希望它与更改焦点的上下文菜单有关,也许这是AIR如何使用系统托盘的错误,也许这只是我缺少的东西。很高兴知道是否是这种情况。

提前致谢

罗布

1 个答案:

答案 0 :(得分:3)

//instead of just calling
activate();

//call
nativeApplication.activate()

//or even better
nativeApplication.activate(nativeWindow);

根据OP的输入进行更新:如果您为应用程序打开了多个窗口,请使用:

nativeApplication.activate(nativeApplication.openedWindows[0]);

如果您不在主WindowedApplication类中,则可以使用静态属性NativeApplication.nativeApplication来获取对单例对象的引用。

WindowedApplication.activate()

  

激活基础NativeWindow(即使此应用程序不是活动应用程序)。

NativeApplication.activate(window:NativeWindow = null)

  

激活此应用程序。如果操作系统允许激活,则激活指定的窗口并将其带到桌面前台;也就是说,在其他应用程序的窗口前面。 (如果window参数为null,则激活此应用程序的可见窗口。)

livingocs并不清楚为什么会这样。它说activate()激活了底层的原生窗口 - 人们会希望它在被激活时被带到前面,但这种情况并没有发生。