簡體   English   中英

如何在Cocoa應用程序中的特定應用程序上激活特定窗口(但不是所有窗口)?

[英]How can I activate a specific window (but not all window) at specific app in Cocoa apps?

我正在嘗試創建OS X應用程序,該應用程序管理窗口以切換它們。

但是我找不到合適的解決方案來激活特定的窗口。

我找到了這些方法。


  • 使用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];

是否存在其他適當的方式來激活特定窗口?

可訪問性為此很好。 使用AXRaiseWindow和switchToApp,您可以切換到任何窗口。

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

(免責聲明:不是我的代碼,我不認識作者。僅使用Google)

注意:還有一個CGWindowList API可用於枚舉窗口,但已棄用。 AX *仍然存在

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM