windowId我从appleScript和CGWindowInfo得到的是不同的?

时间:2016-05-24 02:03:39

标签: objective-c macos applescript

我想使用applescript来获取应用程序的窗口,但由于应用程序可以有多个窗口,我使用objc来获取windowId,如下所示:

    CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly |
                                                   kCGWindowListExcludeDesktopElements,
                                                   kCGNullWindowID);
      for (CFIndex i = 0; i < windowListCount; i++) {
        CFDictionaryRef windowInfo = (CFDictionaryRef)CFArrayGetValueAtIndex(windowList, i);
        CGWindowID windowId;
        CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(windowInfo, kCGWindowNumber), kCGWindowIDCFNumberType, &windowId);
      }

但是这个windowId不同于我从appleScript获得的windowId,如下所示:

tell application "/Applications/QQBrowser.app"
repeat with theWindow in windows
    if visible of theWindow is true then
        get id of theWindow
    end if
end repeat

告诉

我没有找到有用的,有人知道为什么吗?

我的目的是区分应用程序的窗口,是否有人有想法? 非常感谢〜

1 个答案:

答案 0 :(得分:0)

tell application "Numbers"
    get id of every window whose visible is true
end tell

Result: {1462, 1439}

这些是打开的可见窗口的唯一ID。您可以使用此唯一ID来区分应用程序中的窗口,还可以使用以下代码获取有关每个窗口的更多信息:

get properties of window id 1462