如何以编程方式使cocoa应用程序活动

时间:2009-12-15 01:26:10

标签: objective-c cocoa macos nsapplication

我有一个后台进程,当按下热键时会出现透明窗口:

[window makeKeyAndOrderFront:nil];
[[content animator] setAlphaValue:1.0]; // alpha was 0.0

...窗口显示精细&在其他窗口前面(我想要它),但是直到我手动点击窗口,当窗口出现时,无论应用程序处于活动状态,都会保持活动状态。我期待'makeKeyAndOrderFront'也可以使应用程序处于活动状态,但是在我的-applicationWillBecomeActive中添加NSLog行会显示在执行鼠标单击之前它没有得到任何活动通知。

在发布-makeKeyAndOrderFront的同时,有谁知道如何设置我的应用程序?我需要它激活,以便它可以开始接受键盘输入 - 需要任何帮助: - )

3 个答案:

答案 0 :(得分:48)

查看[[NSApplication sharedApplication] activateIgnoringOtherApps : YES];

答案 1 :(得分:10)

10.6或更高

[[NSRunningApplication currentApplication] activateWithOptions:(NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps)];

答案 2 :(得分:1)

@Arvin答案的快速4.2 +

NSRunningApplication.current.activate(options: [.activateIgnoringOtherApps, .activateAllWindows])