2016-05-24 2 views
0

Ich will Applescript verwenden, um das Fenster einer Anwendung zu bekommen, aber da die App mehrere Fenster haben können, verwende ich objc wie folgt zu erhalten windowId:FensterId bekomme ich von AppleScript und CGWindowInfo ist anders?

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); 
     } 

aber windowId unterscheidet sich von der windowId ich von dem Apple wie folgt:

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 

Ende

sagen habe ich nicht etw nützlich finde, weiß jemand, warum?

mein Ziel ist es, die Fenster einer App zu unterscheiden, hat jemand einige Ideen? sehr viel
Dank ~

Antwort

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

Result: {1462, 1439} 

Dies sind eindeutige ID des für die offenen Fenster sichtbar. Sie könnten diese eindeutige ID verwenden Fenster in einer App zu unterscheiden, und Sie können auch weitere Informationen über jedes Fenster mit Code wie erhalten:

get properties of window id 1462 
+0

Dank für die Hilfe, ich habe Ihre Methode versucht, aber das Ergebnis stellt sich heraus, unterscheidet sich von der CGWindowID, wie: Das Ergebnis von AppleScript ist 93, aber die CGWindowID des Fensters ist 7493, also funktioniert das nicht für mich. Schließlich verwende ich die Methode zur Beurteilung der Grenzen des Fensters, um das Fenster zu identifizieren. – melody5417

Verwandte Themen