有没有办法在应用程序中不使用蜜蜂来制作“makeKeyAndOrderToFront”?
如果我在 Safari 中并且在菜单栏中有一个 MenuItem 到我的应用程序,在我按下它之后,我想在前面显示我的应用程序的一个窗口(makeKeyAndOrderToFront 会在你在应用程序中时这样做)。
我可以使用哪种方式?以及如何为这个窗口设置动画(如 Tweeties Add new Tweet -> atebits.com)。
谢谢!
有没有办法在应用程序中不使用蜜蜂来制作“makeKeyAndOrderToFront”?
如果我在 Safari 中并且在菜单栏中有一个 MenuItem 到我的应用程序,在我按下它之后,我想在前面显示我的应用程序的一个窗口(makeKeyAndOrderToFront 会在你在应用程序中时这样做)。
我可以使用哪种方式?以及如何为这个窗口设置动画(如 Tweeties Add new Tweet -> atebits.com)。
谢谢!
正如您所发现的,更改应用程序中的窗口顺序对哪个应用程序处于活动状态没有任何影响。您可以通过激活它来将您的应用程序置于前台:
[NSApp activateIgnoringOtherApps:YES];
如果您的应用程序有一个停靠图标,则行为将类似于用户单击它。
Applescript 将是让您的应用程序最前沿的一种非常简单的方法。不过,它不会做任何动画。
tell application "System Events" to set frontmost of process "My Application" to true
如果您的应用程序与窗口服务器有连接(如果它使用 AppKit 或 Carbon,它将连接到窗口服务器),您可以使用核心服务功能SetFrontProcess()
将其带到前台。SetFrontProcessWithOptions()
可用于仅将应用程序最前面的非浮动窗口置于最前面。这些功能似乎可用于 64 位应用程序,但如果您的目标是 10.6+,则最好使用NSRunningApplication
该类。就像是
[[[NSRunningApplication
runningApplicationsWithBundleIdentifier:ident] lastObject]
activateWithOptions:0]
应该做的伎俩。
如果我正确理解了这个问题,也许完成您想要的最佳方法是让您的应用程序响应您在选择菜单项后发送给它的 Apple 事件,这会将您的应用程序和所需的窗口置于前面。