2014-09-21 43 views
0

我正在尝试创建一个OS X应用程序来管理切换它们的窗口。如何在Cocoa应用程序中的特定应用程序中激活特定窗口(但不是所有窗口)?

但我找不到合适的解决方案来激活特定的窗口。

我找到了这些方法。


  • 使用AppleScript。
    • 按窗口标题或窗口号指定窗口。
    • 但是,如果一个窗口具有与其他窗口相同的窗口标题,则激活不能正常工作。

-- For example, this script activate Google Chrome's second window 
tell application "System Events" 
    tell process "Google Chrome" 
     set thewindow to window 2 
     tell thewindow 
      perform action "AXRaise" 
     end tell 
     set frontmost to true 
    end tell 
end tell 

  • 使用NSApplicationActivateIgnoringOtherApps
    • 但是,这种方式不能指定一个窗口。

NSRunningApplication* app = [NSRunningApplication runningApplicationWithProcessIdentifier: PID]; 
[app activateWithOptions: NSApplicationActivateIgnoringOtherApps]; 

不存在其他appropricate方法来激活特定的窗口?

回答

0

辅助功能正常工作。使用AXRaiseWindow & switchToApp可以切换到任何窗口。

看:https://github.com/jsuder/WindowFairy/blob/master/WindowManager.m

(声明:不是我的代码和IM不与作者相识只是使用谷歌。)

注:另外还有一点可以用来枚举窗户CGWindowList API,但它已被弃用。 AX *尽管

+0

谢谢你的意见。我搜索了kAXRaiseAction和AXUIElement,然后成功激活了特定的窗口。 – aqu 2014-09-22 05:42:59

+0

然后接受它;) – 2014-09-22 06:05:54

相关问题